使用道具 举报
最初由 biti_rainy 发布 [B]还有 nested loops and hash join 之份 我们以 nested loop 为例: 如果两个表连接字段都没有索引(通常这个时候是 sort merge / hash join),则驱动表会选择后者 若两个表其中有一个有索引而另外一个没有索引,则驱动表是没有索引那一个,跟顺序无关 若两个表都有索引,则驱动表为 后面 那一个表 所以事实上,RULE下,只有在两个表都存在连接字段的索引的情况下才需要考虑顺序问题 也就是小表放在后面大表放在前面(当然到底哪个好这实际上还跟 符合条件的记录数、数据分布等因素相关!!!,所以应该以实际测试为准) 如果是 CBO 下则跟顺序无关 [/B]
原帖由 zhgazn 于 2007-7-25 09:30 发表 有一个问题:如果两个表都建了index,然后又加hint,又是怎么样的情况呢? 麻烦高手解释一下!
原帖由 juan025 于 2007-10-27 16:31 发表 CBO优化不存在驱动表的概念了,驱动表是针对RBO的. 顾名思义驱动表在嵌套查询中的作用就像是循环结构中的 for(i = 0 ;i++;i< 10),服务器就是通过循环驱动表的记录匹配与驱动表关联的表的数据,最后输出.
原帖由 gozheng 于 2003-7-24 11:04 发表 这个问题我也郁闷,我经常跟同事说要小表(记录小的)驱动大表(记录百万级别的),也就是说FROM 后先写小表,再大表,可我用EXPLAIN PLAN查看发现前后没关系,执行计划都一样!那还有什么驱动表的概念?难道真如FLY115所说的,ORACLE会自动选择驱动表?
本版积分规则 发表回复 回帖后跳转到最后一页