欢迎来到代码驿站!

Oracle

当前位置:首页 > 数据库 > Oracle

oracle使用索引与不使用索引的性能详析

时间:2020-11-18 00:40:50|栏目: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);打印出性能分析表

如下图:

使用索引前:

使用索引后

可以清晰看到使用后cpu使用率很低,并且检索是从索引开始而不是全文检索

总结

上一篇:Oracle数据块损坏之10231内部事件不完全恢复

栏    目:Oracle

下一篇:Oracle除去数据中的换行符以免读取出现问题

本文标题:oracle使用索引与不使用索引的性能详析

本文地址:http://www.codeinn.net/misctech/23769.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有