http://www.wfuyu.com/oracle/的强大的地方就在于他能总帮助让你选择正确的履行计划,即便你给了它毛病的唆使。
实验:
1. 创建测试表:
搜集统计信息:
创建B树索引:
2. 履行select id from tbl_plan;查看它的履行计划:
由于创建了B树索引,正常讲可以从索引中取得id的值,不用全表扫描,但这里使用了全表扫描的方式。
即便使用了HINT,这照旧使用的是全表扫描:
缘由在于这是个B树索引,不会存储NULL值,虽然这张表没有NULL值。如果直接从可能包括NULL值的B树索引中查询记录,NULL值不会存储于索引,就会漏1些记录,那末查询结果就会有错,所以http://www.wfuyu.com/oracle/在此并没有选择使用索引扫描,而是进行的全表扫描。
3. 将id字段设为非空:
相当于这是1个唯1性索引了。
再履行select id from tbl_plan;:
http://www.wfuyu.com/oracle/选择的是索引快速全扫描,由于id是索引字段,直接从索引中取得值是最快速的方式。
如果是使用了HINT的方式:
这使用的是索引全扫描,不如索引快速全扫描,但最少HINT起到了作用,缘由就在于从非空索引中取得值是1种可靠的方式,因此http://www.wfuyu.com/oracle/允许HINT的使用。
总结:
从上面的简单示例可以看到,http://www.wfuyu.com/oracle/总会帮你选择正确的履行计划,即便你将毛病的信息给了http://www.wfuyu.com/oracle/,http://www.wfuyu.com/oracle/这类“忘我”的精神值得我们学习,如果我们的利用系统也是这样足够硬朗,那就更好了。