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使用率很低,并且检索是从索引开始而不是全文检索
总结
相关推荐
罗罗 2020-08-16
talkingDB 2020-07-05
Omega 2020-08-16
娜娜 2020-07-28
goodriver 2020-06-17
oraclemch 2020-11-06
Seandba 2020-08-16
dbasunny 2020-08-16
娜娜 2020-06-22
娜娜 2020-07-18
lklong 2020-11-22
shilukun 2020-10-10
周嘉笙 2020-11-09
iilegend 2020-10-19
EricRay 2020-10-16
zhuzhufxz 2020-09-16
dataminer 2020-08-17
bfcady 2020-08-16