索引的三大特性

1索引高度

在SQL检索数据(SELECT)的时候,索引的高度的不同对检索的效率有明显的差别,数据库访问索引需要读取的数据块通常是索引的高度+1个数据块数,也就是说索引的高度越高,访问索引需要读取的数据块数越多,效率越差。

从上面的试验中可以看到,随着表索引高度的增加,其查询索引产生的一致性读也随之增加。

2索引存储列值

分析一个索引块我们可以知道索引块不仅存储了rowid信息,而且还存储了索引列的值,那么当我们查询的值正好是在索引里时或者做一些聚合计算(如sum,max,min)时,就可以利用这个特性。

3索引本身有序

从索引的存储结构上可以看到,索引的存储是有序存放的,扫描索引的时候是从根节点开始,经过颈节点到叶子节点,这个特点下索引的范围查询或等值查询,索引只需要扫描一段范围就可得出结果,因为其本身是有范围的,我们可用利用索引这个特点来降低实际查询的排序操作。

哪些场景会用不上索引(索引没失效,就是用不上)

.1用索引代价反而更高

2 发生了索引列的类型转换

3 对索引列进行了各种运算

哪些场景会导致索引失效或者丢失了

1 long列调整会导致索引失效

2 move操作致索引失效

3分区表致索引失效

小结:

1.truncate分区会导致全局索引失效,不会导致局部索引失效。如果truncate 增加update global indexes,全局索引不会失效。
2.drop分区会导致全局索引失效,局部索引因为drop分区,所以也不存在该分区的局部索引了。如果drop分区增加update global indexes,全局索引不会失效。
3.split分区会导致全局索引失效,也会导致局部索引失效。如果split分区增加update global indexes,全局索引不会失效。
4.add 分区不会导致全局索引失效,也不会导致局部索引失效。
5.exchange会导致全局索引失效,不会导致局部索引失效。如果exchange分区增加update global indexes,全局索引不会失效。

重要结论:
1. 所有的全局索引,只要用到update global indexes ,都不会失效,其中add分区甚至不需要增加update global indexes都可以生效。
2. 局部索引的操作都不会失效,除了split分区。切记split分区的时候,要将局部索引进行rebuild;

影响数据插入性能影响的认识

1索引是把双刃剑

索引是把双刃剑,它既可以提高查询的速度,单也降低了更新的速度。在一次查询中如果可以利用索引就可以避免对表的全部扫描,从而大大减少一致性读的数量,但当我们维护数据时,同时又需要维护索引,我们知道索引是有序排放的,那么维护索引的开销就会变得很大,所以有时间我们需要插入大批量数据时,可以采取的办法是先把索引失效,待数据维护完成再启用索引,这样往往效率会比较高一下。

2依据业务权衡

数据插入性能受到索引的影响,所以为了提高数据插入的性能,就需要我们根据具体业务的场景来决定索引的创建以及创建的类型等,如果对于一些不经常更新的表我们可以创建索引,对于一些经常更新的表我们为了插入性能的需要可以不创建索引,在一些重复率低的列或OLTP环境中创建普通索引,在一些重复率高的列或OLAP环境中创建位图索引等,不考虑场景的操作,索引更会加大资源消耗,更是影响数据插入的性能。

Oracle索引简单介绍与示例的更多相关文章

  1. Oracle 索引 简单介绍

    1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>       ON <schema>.&l ...

  2. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  3. Oracle索引(Index)介绍使用

    1.什么是引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据:Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引:索引由根节点.分支节点和叶子 ...

  4. 各种Oracle索引类型介绍

    逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引 物理上:Pa ...

  5. mysql索引简单介绍

    索引从本质上来说也是一种表,这样的表存储被列为索引的列项值和指向真正完整记录的指针.索引对用户透明.仅仅被数据库引擎用来加速检索真实记录.有索引的表.insert和update操作会耗费很多其它时间而 ...

  6. oracle学习笔记(一) oracle 体系结构简单介绍以及创建表空间和用户

    体系结构 oracle数据服务器由oracle数据库和实例组成 实例由后台进程和内存结构组成 内存结构由共享池,数据缓冲区,日志缓存区 Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以 ...

  7. 1、原生jdbc连接oracle数据库简单介绍

    一.jbdc的常用API1.Connection:数据库的链接对象2.statement:数据库sql执行对象3.preparedStatment:sql的预编译处理对象,是statement子接口4 ...

  8. oracle索引简单使用

    --查询表索引 select * from user_ind_columns where table_name = upper('HY_PROJECT') and column_name = uppe ...

  9. ORACLE索引监控的简单使用

    --ORACLE索引监控的简单使用-------------------------2013/11/20 说明:     应用程序在开发时,可能会建立众多索引,但是这些索引的使用到底怎么样,是否有些索 ...

随机推荐

  1. UVA 1314 最小表示法

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36117 题意:给定长度为n的字符串,求一个起点使字符串从该起点起的 ...

  2. Codeforces Round #354 (Div. 2)-A

    A. Nicholas and Permutation 题目链接:http://codeforces.com/contest/676/problem/A Nicholas has an array a ...

  3. 分享Kali Linux 2016.2第48周虚拟机

    分享Kali Linux 2016.2第48周虚拟机该虚拟机使用Kali Linux 2016.2第48周的64位镜像安装而成.基本配置如下:(1)该系统默认设置单CPU双核,内存为2GB,硬盘为50 ...

  4. Python学习笔记09

        异常处理   参考文章:http://blog.csdn.net/sinchb/article/details/8392827 有异常则执行except子句--类似C#的catch 就是当没有 ...

  5. Eclipse中使用maven构建web项目中遇到的问题

    构建过程参考: http://blog.csdn.net/smilevt/article/details/8215558/ http://www.cnblogs.com/dcba1112/archiv ...

  6. POJ3084 Panic Room(最小割)

    把某点与某几点分开的最小花费,当然想到最小割.具体怎么建图,可以画个简单的情况,然后就清楚了: 0到1不受控制,建立0->1容量为INF的边: 1到0受在0一边的一个控制面板的控制,建立1-&g ...

  7. linux建立ssh信任关系

    一.建立SSH信任将A主机做为客户端(发起SSH请求 ip:192.168.200.170)将B主机作为服务器端(接收ssh请求   ip:192.168.200.149)以上以主动发起SSH登录请求 ...

  8. 10.24给TA的话

  9. Gulp探究折腾之路(I)2

    文/晚晴幽草(简书作者)原文链接:http://www.jianshu.com/p/9768a4dc7cf7著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 前言: gulp是前端开发过 ...

  10. 来自于2016.2.24的flag

    今天又做了一套xj模拟题-------打比赛这种事情变得越来越无聊了------既影响自己的计划(虽然看起来很难完成的样子),又扰乱心情.而且题目大都是学习算法之类的,与计划不接轨就非常没有兴趣. 然 ...