最近一直在跟Oracle打交道,從最初的一臉懵逼到現(xiàn)在的略有所知,也來(lái)總結(jié)一下自己最近所學(xué),不定時(shí)更新ing…
一:什么是Oracle執(zhí)行計(jì)劃?
執(zhí)行計(jì)劃是一條查詢(xún)語(yǔ)句在Oracle中的執(zhí)行過(guò)程或訪問(wèn)路徑的描述
二:怎樣查看Oracle執(zhí)行計(jì)劃?
因?yàn)槲乙恢庇玫腜LSQL遠(yuǎn)程連接的公司數(shù)據(jù)庫(kù),所以這里以PLSQL為例:
①:配置執(zhí)行計(jì)劃需要顯示的項(xiàng):
工具 —> 首選項(xiàng) —> 窗口類(lèi)型 —> 計(jì)劃窗口 —> 根據(jù)需要配置要顯示在執(zhí)行計(jì)劃中的列
執(zhí)行計(jì)劃的常用列字段解釋?zhuān)?
基數(shù)(Rows):Oracle估計(jì)的當(dāng)前操作的返回結(jié)果集行數(shù)
字節(jié)(Bytes):執(zhí)行該步驟后返回的字節(jié)數(shù)
耗費(fèi)(COST)、CPU耗費(fèi):Oracle估計(jì)的該步驟的執(zhí)行成本,用于說(shuō)明SQL執(zhí)行的代價(jià),理論上越小越好(該值可能與實(shí)際有出入)
時(shí)間(Time):Oracle估計(jì)的當(dāng)前操作所需的時(shí)間
②:打開(kāi)執(zhí)行計(jì)劃:
在SQL窗口執(zhí)行完一條select語(yǔ)句后按 F5 即可查看剛剛執(zhí)行的這條查詢(xún)語(yǔ)句的執(zhí)行計(jì)劃
注:在PLSQL中使用SQL命令查看執(zhí)行計(jì)劃的話(huà),某些SQL*PLUS命令PLSQL無(wú)法支持,比如SET AUTOTRACE ON
三:看懂Oracle執(zhí)行計(jì)劃