关于Oracle数据的学习记录:

四十七、索引
下面为了方便观察问题,使用如下的一个查询操作
SELECT * FORM emp WHERE sal>2000;
只是一个最简单的限定查询,那么现在进一步分析以上查询做了什么事情

范例:进入sys用户,打开跟踪器
CONN sys/change_on_install AS SYSDBA;
SET AUTOTRACE ON;
下面切换回scott用户,重新查询
CONN scott/tiger ;
SET AUTOTRACE ON;
可以发现此时采用了全表扫描的模式(TABLE ACCESS FULL),它在进行这样查询的过程之中,会将过滤条件与数据表中每一行记录进行比较
那么现在可以试着想象一种情况,如果现在emp表里存在有5W条记录,但是从1.5W之后就没有了任何记录符合我们的查询条件了,也就是说如果按照全表扫描的模式意味着要查询无用的3.5W行记录
首先可以想到的方式就是排序,但是即便排序了,ORDER BY并不会影响到WHERE子句的执行,它在最后执行,于是可以采用树的形式完成排序的方式
为了树好看一点,假设工资的记录数据:1500、1100、1250、1300、950、800、2850、2450、2975、1600、3000

发现此时不再需要查询全部的数据记录,而只需要根据数值比较查询有限多个数据即可,而这样的查询就属于索引的支持,也就是说如果使用了索引,那么就需要在数据之外维持一个内存空间,这个空间要保留有以上树的排序关系

范例:创建索引
CREATE INDEX emp_sal_ind ON scott.emp(sal);
在scott.emp表的sal字段上设置一个索引
再次执行查询:
SELECT * FORM scott.emp WHERE sal>2000;
SET AUTOTRACE ON;

TABLE ACCESS BY INDEX ROWID
INDEX RANGE SCAN
现在发现一旦加入索引机制,那么不再执行全表扫描的操作,而是使用索引进行了查询,但是这个索引也只是针对sal字段起作用
通过分析,可以发现索引可以提升数据的查询性能
现在有一个问题出现了,索引如果要想正常使用,实际上并不是扫描数据表,而是扫描索引数据(B*Tree),如果说现在有雇员的工资数据被改变了,索引树的内容一定要发生改变,如果此时表中的数据量非常庞大,那么每一次树的改变一定会消耗大量的内存空间,如果表中的数据要被频繁修改的话,那么索引就变成了拖累,反而会降低整个数据库的性能,所以索引的使用要慎重

实际情况:有一个数据库,假设有3亿条数据,里面的数据平均每秒会更新2-3次,但是由于信息检索的需要,此数据库必须保持快速的数据检索需要与数据统计的需要,那么请问如果你是设计者,怎么解决这个问题?
需求的矛盾点:如果要想更新迅速,那么不能使用索引,如果要想检索迅速,那么就必须使用索引
**方式一(土豪级):装备一台超级电脑
**方式二(屌丝级):此时只能牺牲实时性,延缓新数据的统计,在数据库里面准备两张表,一张表专门留给用户进行数据的更新使用,并且记录号更新的日志,而另外一张数据表,可以设置索引,实现信息的快速检索,可以在夜间的时候或者人少的时候实现数据的汇总

Oracle数据库----------------索引相关推荐

  1. 资源放送丨《Oracle数据库索引分裂详解》PPT视频

    点击上方"蓝字" 关注我们,享更多干货! 前段时间,墨天轮邀请数据库资深专家 孙加鹏 老师分享了<Oracle数据库索引分裂详解>,在这里我们将课件PPT和实况录像分享 ...

  2. 本周两场直播丨通过源码了解openGauss多线程架构;Oracle数据库索引分裂详解。...

    1.管中窥豹之通过源码了解openGauss多线程架构-8月18日20:00 本讲座主要介绍openGauss的多线程架构,通过源码了解线程间通信机制.线程池的原理和优势.如何开启线程池等,力图通过多 ...

  3. oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍

    SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...

  4. oracle数据库索引

    oracle数据库索引 1.b-tree索引 2.位图索引 3.函数索引 3.哈希索引:不适合模糊查询和范围查询(包括like,>,<,between--and等),由于 Hash 索引比 ...

  5. Oracle数据库索引失效,引起GoldenGate异常

    今天客户的GoldenGate出问题了,打电话过来咨询,根据客户描述的问题现象和日志的分析,初步判断是数据库索引异常引起的故障,以下是问题的分析和处理描述. 问题描述: 2010-02-01 17:1 ...

  6. oracle怎么找出失效索引,Oracle数据库索引失效

    Oracle数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后 Oracle数据库中有一个表,用PL/SQL查看该表的索引没有 ...

  7. oracle 索引_分享三个Oracle数据库索引监控脚本,值得收藏

    概述 我们在维护业务系统时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,那么oracle 是如何监控索引的使用状况,是否可以清除它们? 监控索引 一般有两种方式: ...

  8. lepus监控oracle数据库_实用脚本一键监控oracle数据库索引使用状况

    概述 我们在维护业务系统时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,那么oracle 是如何监控索引的使用状况,是否可以清除它们? 监控索引 一般有两种方式: ...

  9. oracle 查询索引个数,Oracle数据库索引的创建和查询

    索引命名规范:普通索引最好i_开头,唯一索引最好u_开头,primary key索引最好pk_开头 1.创建索引:create index 索引名 on 表名(字段名); 2.查询索引 oracle中 ...

最新文章

  1. Python join()方法
  2. 【javascript】—— JS判断浏览器类型、操作系统
  3. 生鲜水产品牌“仙泉湖”获和智4000万元投资
  4. jdk中一些常见命令
  5. Could not parse configuration: /hibernate.cfg.xml
  6. cmd命令生成webservice_使用wsimport命令生成webService客户端代码实例
  7. 中石油训练赛 - DNA(字符串哈希)
  8. KnowIME: A System to Construct a Knowledge Graph for Intelligent Manufacturing Equipment-学习笔记
  9. RUNOOB python练习题 39 数组排序
  10. Base64编码的原理与常用实现
  11. 对称密码和非对称密码体系_密码学类型:对称和不对称
  12. 2、数的分解 - 2019年第十届蓝桥杯大赛软件类省赛
  13. Handbook之012:函数类别构型
  14. 线性表的常见操作实现
  15. Check Point截获JavaScript文件隐形攻击
  16. STM32F072C8T6调试IAP(CAN)记录
  17. 所谓的1261考核法算不算是末尾淘汰?
  18. 程序员加油站 -- 懂电脑更要懂人脑!继“书呆子”后又一呆子现世!
  19. window10安装kubectl工具及配置config信息
  20. 第二天:Kafka API操作

热门文章

  1. 推荐:2010年度十大杰出IT博客
  2. 计算机应用技术与物联网专业介绍,《物联网应用技术》专业简介
  3. 悲观锁与乐观锁的区别 和 Redis中的watch
  4. redis常用命令:
  5. 微信小程序学习(实战)
  6. 学习MATLAB的第一天,梳理一些见到的函数。1.matlab中sin、cos、tan三角函数问题。2.abs函数。3.vpa函数。4.disp函数。5.class函数。6.logical函数。
  7. 计算机应用基础题,2017计算机应用基础模拟试题及答案
  8. C++ 函数指针 类成员函数指针
  9. COCO数据集格式解析
  10. Keil环境添加STC系列单片机