SQL等价改写核心思想概述.pptx

SQL等价改写核心思想概述;;1;1:1 关系 两表关联返回1的关系,常见于对表做垂直拆分之后的两表关联(主键关联) 1:N 关系 两表关联返回N的关系 最常见的应用,比如一个商品(1)对应多个订单(N) N:N 关系 两表关联返回局部范围笛卡尔积,常见于半连接和反连接中(in,exists/not in,not exists);select count(*) from a left join b on a.id=b.id; 某运营商,2012年,Oracle10gR2 a:b是1:1关系,a和b都是上千万条数据,原始SQL要跑12秒 因为是left join,不管a和b是否能关联上,都会返回a的所有数据,b属于1的关系 不管有没有关联上,不影响最终count(*)的结果,所以SQL被改写为: select count(*) from a; 最终0.05秒就能返回结果 其实,只要b是1的关系,不管a是属于1的关系还是N的关系,都能这样改写 注:到了Oracle11g之后,CBO会自动改写上面SQL;1;;select * from dept where deptno in (select deptno from emp); dept与emp是1:N关系,上面查询只返回dept表的数据,也就是说返回的是1的关系 将上面查询改写为内连接的时候,可以将emp变成1的关系,再与dept关联

文档评论(0)

1亿VIP精品文档

相关文档