oracle索引用不了,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索引用不了,oracle使用索引与不使用索引的性能详析相关推荐
- Oracle教程之四招提高Oracle位图索引的使用效果
位图索引是Oralce数据库索引中的异类,其在某些比较特殊的场合中有突出的表现.一般来说,位图索引的效果直接跟列的基 数相关.为此在谈到如何提高位图索引的使用效果时,也往往跟这个列的基数相关.为此必须 ...
- oracle 伪列访问序列,Oracle数据库对象,同义词、序列、视图、索引
数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...
- oracle索引对模糊查询,Oracle索引
一.Oracle索引原理 通俗易懂得讲,索引就是给每条记录建立了一个目录(索引), 每个建立的索引都是按照这个索引的字段去排序(实际未必是排序)存放, 然后按照索引字段去查询的时候,就先去查询索引,此 ...
- oracle数据库中索值,Oracle数据库中的索引详解
Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...
- oracle选择外键列,Oracle外键列上是否需要索引?
外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可能会造成严重性能问题. 无论是Or 外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可 ...
- oracle 列级外键,Oracle外键列上是否需要索引?
外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可能会造成严重性能问题. 无论是Or 外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可 ...
- oracle date引入哪个包,oracle 索引字段包含date类型,使用spring jdbc更新时不走索引,而是走table access full的问题...
环境: spring jdbc 3.2.3.RELEASE oracle 11.2.0.1.0 - Production 生产环境存在大表(3000万数据):WR_MP_HOURW_R,包含复合主键: ...
- c oracle 多条语句,Oracle 实践:如何编写一条 sql 语句获取数据表的全部索引信息(兼容 Oracle 19c、Oracle 11g)...
一.引言 部门使用 Oracle 已经有一些时日,最近在工作中遇到了这么一个需求: 我们希望拿到某些数据表的全部索引信息,对索引信息进行检查,检查是否有漏掉没有创建的索引 这个需求,核心的点在于,我需 ...
- Oracle教程之管理索引(一)--Oracle管理索引
1.索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<tabl ...
- oracle图书操作、sql语句查询+授权、视图、索引、表操作
oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...
最新文章
- android ScrollView/NestedScrollView 添加可拖动的滚动条
- Ubuntu 无界面使用selenium chrome + headless
- html 物理引擎,在物理引擎中画圆弧
- 使用openocd调试Linux内核,openocd安装与调试
- 【Ubuntu】ubuntu系统下python3和python2环境自由切换
- overline css,CSS text-decoration-line 属性
- 我用休眠做并发控制,搞垮了下游服务
- recv和send函数
- 《恋上数据结构第1季》单向链表、双向链表
- 中国酒精炉行业市场供需与战略研究报告
- c语言一行灯的熄灯问题,熄灯问题
- TPU是什么材料,tpu材料属于塑料吗?
- DevOps--Chef/Puppet
- ico的尺寸_Favicon.ico浏览器图标文件制作和正确使用
- 【raspberry pi】树莓派3测评
- [AGC043-B]Merge Triplets
- PHP制作简易问卷调查
- 应聘经历:网易笔试归来
- TP link driver - TL-WN823N linux驱动
- 哈夫曼编码--贪心算法