Oracle中直方圖對(duì)執(zhí)行計(jì)劃的影響詳解
前言
大家應(yīng)該都知道,在Oracle數(shù)據(jù)庫(kù)中,CBO會(huì)默認(rèn)目標(biāo)列的數(shù)據(jù)在其最小值low_value和最大值high_value之間均勻分布,并按照均勻分布原則,來(lái)計(jì)算目標(biāo)列
施加查詢條件后的可選擇率以及結(jié)果集的cardinality.
如果對(duì)目標(biāo)收集了直方圖,則意味著CBO不再認(rèn)為目標(biāo)列上的數(shù)據(jù)是均勻分布的。CBO會(huì)用該列上的直方圖的統(tǒng)計(jì)信息計(jì)算返回結(jié)果集的cardinality.
驗(yàn)證直方圖對(duì)執(zhí)行計(jì)劃的影響步驟:
1、創(chuàng)建一張表T1
2、往表中插入傾斜度很高的數(shù)據(jù)
3、在B字段上創(chuàng)建索引
4、刪除表中直方圖信息
5、查看直方圖信息
HISTOGRAM:NONE
代表沒(méi)有直方圖信息
6、查詢b=2的執(zhí)行計(jì)劃
從執(zhí)行計(jì)劃可以看出:查詢走的是全表掃描,因?yàn)楸鞹1中的數(shù)據(jù)被視為了均勻分布,CBO認(rèn)為走
全表比走索引會(huì)更快
7、收集直方圖信息
8、查詢直方圖信息
HISTOGRAM:FREQUENCY
頻率直方圖
可以看出此時(shí)表中已經(jīng)有直方圖信息
9、再次查看b=2的執(zhí)行計(jì)劃
這個(gè)時(shí)候可以看出,執(zhí)行計(jì)劃走了索引,結(jié)果正確!
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
ORACLE應(yīng)用經(jīng)驗(yàn)(2)
ORACLE應(yīng)用經(jīng)驗(yàn)(2)...2007-03-03解決ORA-01747:user.table.column,table.column或列說(shuō)明無(wú)效
這篇文章主要介紹了解決ORA-01747:user.table.column,table.column或列說(shuō)明無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)方法
Oracle數(shù)據(jù)庫(kù)的遠(yuǎn)程連接可以通過(guò)多種方式來(lái)實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Oracle?19c?RAC?手工建庫(kù)的搭建過(guò)程
這篇文章主要介紹了Oracle?19c?RAC?手工建庫(kù)搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01Oracle數(shù)據(jù)庫(kù)字符集及修改方式詳解
Oracle語(yǔ)言環(huán)境的描述包括三部分:language、territory、characterset(語(yǔ)言、地域、字符集),這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)字符集概述及修改方式,需要的朋友可以參考下2023-08-08Navicat Premium中Oracle創(chuàng)建主鍵自增的方法
這篇文章主要介紹了Navicat Premium中Oracle創(chuàng)建主鍵自增的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12