前言
Oracle存儲(chǔ)索引的數(shù)據(jù)結(jié)構(gòu)是B*樹(shù)。位圖索引也是如此,僅僅只是是葉子節(jié)點(diǎn)不同B*數(shù)索引;
索引由根節(jié)點(diǎn)、分支節(jié)點(diǎn)和葉子節(jié)點(diǎn)組成。上級(jí)索引塊包括下級(jí)索引塊的索引數(shù)據(jù),葉節(jié)點(diǎn)包括索引數(shù)據(jù)和確定行實(shí)際位置的rowid。
使用索引的目的:
何時(shí)使用索引:
索引的種類(lèi)
oracle使用索引與不使用的性能
首先準(zhǔn)備一張百萬(wàn)條數(shù)據(jù)的表,這樣分析數(shù)據(jù)差距更形象!
下面用分頁(yè)表數(shù)據(jù)對(duì)表進(jìn)行分析,根據(jù)EMP_ID 字段排序,使用索引和不使用索引性能差距!
sql查詢(xún)語(yǔ)法準(zhǔn)備,具體業(yè)務(wù)根據(jù)具體表書(shū)寫(xiě)sql語(yǔ)法:
SELECT *FROM (SELECT ROW_.*, ROWNUM ROWNUM_FROM (SELECT *FROM KQS_SQ_INFO i ORDER BY i.EMP_ID desc ) ROW_WHERE ROWNUM <= 20)WHERE ROWNUM_ >= 10;
使用 explain plan for
可以分析sql
如下:
explain plan for SELECT *FROM (SELECT ROW_.*, ROWNUM ROWNUM_FROM (SELECT *FROM KQS_SQ_INFO i ORDER BY i.EMP_ID desc ) ROW_WHERE ROWNUM <= 20)WHERE ROWNUM_ >= 10;
計(jì)算出SQL性能,使用
select * from TABLE(dbms_xplan.display);打印出性能分析表
如下圖:
使用索引前:
使用索引后
可以清晰看到使用后cpu使用率很低,并且檢索是從索引開(kāi)始而不是全文檢索
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選