情况是这样,表record 大概300多W,表record_exten大概58W,图片是两条执行计划,可以看到order by的表不同,导致的查询计划的rows相差很大~ 请问是什么原因~~~
业精于勤,荒于嬉;行成于思,毁于随。
由於order by 不同的字段,導致兩個查詢中表record_exten所使用的索引不同。顯然索引PRIMARY 比DeptID要更加優化。
order by 使用索引的情況
1)預設情況是依序先取rownum,再order by 2)若order by 符合使用索引的情況,則先order by,再取rownum
order by 使用索引是有條件的:
1)ORDER BY中所有的列必須包含在相同的索引中並保持在索引中的排列順序. 2)ORDER BY中所有的列必須定義為非空. 3)另外,如果ORDER BY中的列在where 條件中出現,也會使用索引
詳細查看:http://happymen001.iteye.com/blog/674764
由於order by 不同的字段,導致兩個查詢中表record_exten所使用的索引不同。顯然索引PRIMARY 比DeptID要更加優化。
order by 使用索引的情況
1)預設情況是依序先取rownum,再order by
2)若order by 符合使用索引的情況,則先order by,再取rownum
order by 使用索引是有條件的:
1)ORDER BY中所有的列必須包含在相同的索引中並保持在索引中的排列順序.
2)ORDER BY中所有的列必須定義為非空.
3)另外,如果ORDER BY中的列在where 條件中出現,也會使用索引
詳細查看:http://happymen001.iteye.com/blog/674764