oracle使用索引與不使用索引的性能詳析
前言
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。
使用索引的目的:
- 加快查詢速度
- 降低I/O操作
- 消除磁盤(pán)排序
何時(shí)使用索引:
- 查詢返回的記錄數(shù)
- 排序表<40%
- 非排序表 <7%
- 表的碎片較多(頻繁添加、刪除)
索引的種類(lèi)
- 非唯一索引(最經(jīng)常使用)
- 唯一索引
- 位圖索引
- 局部有前綴分區(qū)索引
- 局部無(wú)前綴分區(qū)索引
- 全局有前綴分區(qū)索引
- 散列分區(qū)索引
- 基于函數(shù)的索引
oracle使用索引與不使用的性能
首先準(zhǔn)備一張百萬(wàn)條數(shù)據(jù)的表,這樣分析數(shù)據(jù)差距更形象!
下面用分頁(yè)表數(shù)據(jù)對(duì)表進(jìn)行分析,根據(jù)EMP_ID 字段排序,使用索引和不使用索引性能差距!
sql查詢語(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ì)腳本之家的支持。
- Oracle數(shù)據(jù)庫(kù)scott用戶創(chuàng)建view視圖權(quán)限的操作方法
- Oracle創(chuàng)建帶有參數(shù)的視圖代碼介紹
- Oracle Scott創(chuàng)建視圖權(quán)限不足解決辦法
- oracle 視圖權(quán)限 oracle 創(chuàng)建視圖權(quán)限不足
- oracle中的視圖詳解
- Oracle中的索引講解
- Oracle Index索引無(wú)效的原因與解決方法
- ORACLE檢查找出損壞索引(Corrupt Indexes)的方法詳解
- Oracle數(shù)據(jù)庫(kù)中建立索引的基本方法講解
- Oracle學(xué)習(xí)筆記之視圖及索引的使用
相關(guān)文章
誤刪除$ORACLE_HOME/dbs下的參數(shù)文件、密碼文件快速重建的方法
這篇文章主要介紹了誤刪除$ORACLE_HOME/dbs下的參數(shù)文件、密碼文件快速重建的方法,需要的朋友可以參考下2017-04-04Oracle expdp/impdp 及 exp/imp 命令詳解
使用Oracle數(shù)據(jù)庫(kù)的過(guò)程中會(huì)經(jīng)常對(duì)數(shù)據(jù)進(jìn)行導(dǎo)入導(dǎo)出,Oracle 數(shù)據(jù)庫(kù)提供 expdp / impdp (Data Pump,數(shù)據(jù)泵)以及 exp / imp 兩種工具進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出,可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行邏輯備份,這篇文章主要介紹了Oracle expdp/impdp 及 exp/imp 命令詳解,需要的朋友可以參考下2024-07-07在OracleE數(shù)據(jù)庫(kù)的字段上建立索引的方法
在OracleE數(shù)據(jù)庫(kù)的字段上建立索引的方法...2007-04-04oracle查詢重復(fù)數(shù)據(jù)和刪除重復(fù)記錄示例分享
oracle查詢重復(fù)數(shù)據(jù)和刪除重復(fù)記錄示例分享,大家參考使用吧2013-12-12Oracle之SQL語(yǔ)句性能優(yōu)化(34條優(yōu)化方法)
本篇文章主要介紹了Oracle之SQL語(yǔ)句性能優(yōu)化,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11大表delete刪數(shù)據(jù)導(dǎo)致數(shù)據(jù)庫(kù)異常解決
這篇文章主要為大家介紹了大表delete刪數(shù)據(jù)導(dǎo)致數(shù)據(jù)庫(kù)異常解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Linux系統(tǒng)下Oracle數(shù)據(jù)庫(kù)的安裝和啟動(dòng)關(guān)閉操作教程
這篇文章主要介紹了Linux系統(tǒng)下Oracle數(shù)據(jù)庫(kù)的安裝和啟動(dòng)關(guān)閉操作教程,并針對(duì)在sqlplus下所需執(zhí)行的命令進(jìn)行講解,需要的朋友可以參考下2015-12-12oracle插入字符串?dāng)?shù)據(jù)時(shí)字符串中有''單引號(hào)問(wèn)題
這篇文章主要介紹了oracle插入字符串?dāng)?shù)據(jù)時(shí)字符串中有'單引號(hào)問(wèn)題的相關(guān)資料,需要的朋友可以參考下2017-04-04