溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle中使用索引與不使用索引的性能對比分析

發布時間:2021-06-11 17:49:53 來源:億速云 閱讀:288 作者:Leah 欄目:數據庫

oracle中使用索引與不使用索引的性能對比分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

前言

Oracle存儲索引的數據結構是B*樹。位圖索引也是如此,僅僅只是是葉子節點不同B*數索引;

索引由根節點、分支節點和葉子節點組成。上級索引塊包括下級索引塊的索引數據,葉節點包括索引數據和確定行實際位置的rowid。

使用索引的目的:

  • 加快查詢速度

  • 降低I/O操作

  • 消除磁盤排序

何時使用索引:

  • 查詢返回的記錄數

  • 排序表<40%

  • 非排序表 <7%

  • 表的碎片較多(頻繁添加、刪除)

索引的種類

  • 非唯一索引(最經常使用)

  • 唯一索引

  • 位圖索引

  • 局部有前綴分區索引

  • 局部無前綴分區索引

  • 全局有前綴分區索引

  • 散列分區索引

  • 基于函數的索引

oracle使用索引與不使用的性能

首先準備一張百萬條數據的表,這樣分析數據差距更形象!

下面用分頁表數據對表進行分析,根據EMP_ID 字段排序,使用索引和不使用索引性能差距!

sql查詢語法準備,具體業務根據具體表書寫sql語法:

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;

計算出SQL性能,使用

select * from TABLE(dbms_xplan.display);打印出性能分析表

如下圖:

使用索引前:

oracle中使用索引與不使用索引的性能對比分析

關于oracle中使用索引與不使用索引的性能對比分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女