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

所属分类: 数据库 / oracle 阅读数: 1100
收藏 0 赞 0 分享

前言

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数据库创建存储过程的示例详解

这篇文章主要介绍了Oracle数据库创建存储过程的示例详解,存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作。对此感兴趣可以了解一下
收藏 0 赞 0 分享

Oracle 11g 数据库的部署的图文教程

这篇文章主要介绍了Oracle 11g 数据库的部署,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

oracle数据库关于索引建立及使用的详细介绍

这篇文章主要介绍了oracle数据库关于索引建立及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

ORACLE数据库中Rownum用法详解

这篇文章主要介绍了ORACLE数据库中ROWNUM用法详解,对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,且rownum不能以任何表的名称作为前缀,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用imp和exp命令对Oracle数据库进行导入导出操作详解

这篇文章主要介绍了使用imp和exp命令对Oracle数据库进行导入导出操作详解,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

CMD操作oracle数据导库过程图解

这篇文章主要介绍了CMD操作oracle数据导库过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle数据库游标连接超出解决方案

这篇文章主要介绍了Oracle数据库游标连接超出解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle如何设置表空间数据文件大小

这篇文章主要介绍了Oracle如何设置表空间数据文件大小,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

Oracle通过LogMiner实现数据同步迁移

这篇文章主要介绍了Oracle通过LogMiner实现数据同步迁移的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

Oracle数据库中SQL开窗函数的使用

这篇文章主要介绍了Oracle数据库中SQL开窗函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享
查看更多