oracle中使用索引与不使用索引的性能对比分析

55次阅读
没有评论

共计 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 中使用索引与不使用索引的性能对比分析

关于 oracle 中使用索引与不使用索引的性能对比分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计948字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)