共計 579 個字符,預(yù)計需要花費 2 分鐘才能閱讀完成。
這篇文章主要介紹 Oracle 中直方圖對執(zhí)行計劃的影響有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
前言
在 Oracle 數(shù)據(jù)庫中,CBO 會默認目標列的數(shù)據(jù)在其最小值 low_value 和最大值 high_value 之間均勻分布,并按照均勻分布原則,來計算目標列
施加查詢條件后的可選擇率以及結(jié)果集的 cardinality.
如果對目標收集了直方圖,則意味著 CBO 不再認為目標列上的數(shù)據(jù)是均勻分布的。CBO 會用該列上的直方圖的統(tǒng)計信息計算返回結(jié)果集的 cardinality.
驗證直方圖對執(zhí)行計劃的影響步驟:
1、創(chuàng)建一張表 T1
2、往表中插入傾斜度很高的數(shù)據(jù)
3、在 B 字段上創(chuàng)建索引
4、刪除表中直方圖信息
5、查看直方圖信息
HISTOGRAM:NONE 代表沒有直方圖信息
6、查詢 b = 2 的執(zhí)行計劃
從執(zhí)行計劃可以看出:查詢走的是全表掃描,因為表 T1 中的數(shù)據(jù)被視為了均勻分布,CBO 認為走
全表比走索引會更快
7、收集直方圖信息
8、查詢直方圖信息
HISTOGRAM:FREQUENCY 頻率直方圖
可以看出此時表中已經(jīng)有直方圖信息
9、再次查看 b = 2 的執(zhí)行計劃
這個時候可以看出,執(zhí)行計劃走了索引,結(jié)果正確!
以上是“Oracle 中直方圖對執(zhí)行計劃的影響有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!