近日查看數(shù)據(jù)庫運行較長的語句,發(fā)現(xiàn)我們這邊的開發(fā)人員真是厲害,不懂裝懂的本領(lǐng)真高。 開發(fā)以為只要走索引就是快的,而且剛好知道index hint可以強制走索引,所以就用上了??墒亲叩氖莃itmap index full scan,把整個索引都掃描了,然后根據(jù)索引的位圖轉(zhuǎn)化
近日查看數(shù)據(jù)庫運行較長的語句,發(fā)現(xiàn)我們這邊的開發(fā)人員真是厲害,不懂裝懂的本領(lǐng)真高。
開發(fā)以為只要走索引就是快的,而且剛好知道index hint可以強制走索引,所以就用上了??墒亲叩氖莃itmap index full scan,把整個索引都掃描了,然后根據(jù)索引的位圖轉(zhuǎn)化(bitmap conversion to rowids)成rowid,再根據(jù)索引的rowid和表的rowid一一對應(yīng),從表中取得數(shù)據(jù)(table access by index rowid)。
既然是從索引中的所有rowid找到表中的所有的數(shù)據(jù),為啥不直接掃描整個表,直接掃描整個表不是更快嗎?不要當(dāng)oracle是傻的,我把index hint去掉之后,走得是全表掃描,這就對了嘛。
讀索引是單塊讀,回表也是單塊讀。一次的單塊讀和多塊讀時間上是差不多的,顯然多塊讀一次掃描的塊數(shù)更多。
至于優(yōu)化的話就簡單了,去掉index hint就可以了,如果表大的話就加并行就ok了。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com