共計 948 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
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 中使用索引與不使用索引的性能對比分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。
向 AI 問一下細節