甲骨文中使用索引与不使用索引的性能对比分析

  

甲骨文中使用索引与不使用索引的性能对比分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>前言

甲骨文存储索引的数据结构是B *树。位图索引也是如此,仅仅只是是叶子节点不同B *数索引;

索引由根节点,分支节点和叶子节点组成。上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid。

<强>使用索引的目的:

<李>

加快查询速度

<李>

降低I/O操作

<李>

消除磁盘排序

<强>何时使用索引:

<李>

查询返回的记录数

<李>

排序表& lt; 40%

<李>

非排序表& lt; 7%

<李>

表的碎片较多(频繁添加,删除)

<>强索引的种类

<李>

非唯一索引(最经常使用)

<李>

唯一索引

<李>

位图索引

<李>

局部有前缀分区索引

<李>

局部无前缀分区索引

<李>

全局有前缀分区索引

<李>

散列分区索引

<李>

基于函数的索引

<强>甲骨文使用索引与不使用的性能

首先准备一张百万条数据的表,这样分析数据差距更形象!

下面用分页表数据对表进行分析,根据EMP_ID字段排序,使用索引和不使用索引性能差距!

sql查询语法准备,具体业务根据具体表书写sql语法:

SELECT  *   得到(SELECT  ROW_。*, ROWNUM  ROWNUM_   得到(SELECT  *   得到KQS_SQ_INFO 小姐;   ORDER  BY  i.EMP_ID  desc ) ROW_   时间=WHERE  ROWNUM  & lt; 20)   WHERE  ROWNUM_ 祝辞=,10;

使用<代码> 可解释计划以分析sql

如下:

explain  plan  for  SELECT  *   得到(SELECT  ROW_。*, ROWNUM  ROWNUM_   得到(SELECT  *   得到KQS_SQ_INFO 小姐;   ORDER  BY  i.EMP_ID  desc ) ROW_   时间=WHERE  ROWNUM  & lt; 20)   WHERE  ROWNUM_ 祝辞=,10;

计算出SQL性能,使用

select  *,得到表(dbms_xplan.display);打印出性能分析表

如下图:

使用索引前:

凹坠俏闹惺褂盟饕氩皇褂盟饕男阅芏员确治?

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

甲骨文中使用索引与不使用索引的性能对比分析