http://www.vxbq.cn/oracle/的強(qiáng)大的地方就在于他能總幫助讓你選擇正確的履行計(jì)劃,即便你給了它毛病的唆使。
實(shí)驗(yàn):
1. 創(chuàng)建測(cè)試表:
搜集統(tǒng)計(jì)信息:
創(chuàng)建B樹(shù)索引:
2. 履行select id from tbl_plan;查看它的履行計(jì)劃:
由于創(chuàng)建了B樹(shù)索引,正常講可以從索引中取得id的值,不用全表掃描,但這里使用了全表掃描的方式。
即便使用了HINT,這照舊使用的是全表掃描:
緣由在于這是個(gè)B樹(shù)索引,不會(huì)存儲(chǔ)NULL值,雖然這張表沒(méi)有NULL值。如果直接從可能包括NULL值的B樹(shù)索引中查詢(xún)記錄,NULL值不會(huì)存儲(chǔ)于索引,就會(huì)漏1些記錄,那末查詢(xún)結(jié)果就會(huì)有錯(cuò),所以http://www.vxbq.cn/oracle/在此并沒(méi)有選擇使用索引掃描,而是進(jìn)行的全表掃描。
3. 將id字段設(shè)為非空:
相當(dāng)于這是1個(gè)唯1性索引了。
再履行select id from tbl_plan;:
http://www.vxbq.cn/oracle/選擇的是索引快速全掃描,由于id是索引字段,直接從索引中取得值是最快速的方式。
如果是使用了HINT的方式:
這使用的是索引全掃描,不如索引快速全掃描,但最少HINT起到了作用,緣由就在于從非空索引中取得值是1種可靠的方式,因此http://www.vxbq.cn/oracle/允許HINT的使用。
總結(jié):
從上面的簡(jiǎn)單示例可以看到,http://www.vxbq.cn/oracle/總會(huì)幫你選擇正確的履行計(jì)劃,即便你將毛病的信息給了http://www.vxbq.cn/oracle/,http://www.vxbq.cn/oracle/這類(lèi)“忘我”的精神值得我們學(xué)習(xí),如果我們的利用系統(tǒng)也是這樣足夠硬朗,那就更好了。