国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 一则简单示例看Oracle的“无私”健壮性

一则简单示例看Oracle的“无私”健壮性

来源:程序员人生   发布时间:2014-11-05 08:06:35 阅读次数:2489次

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/这类“忘我”的精神值得我们学习,如果我们的利用系统也是这样足够硬朗,那就更好了。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生