索引的三大特性

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. 【SQL 触发器】

    一.MySQL上触发器的使用 示例: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW t ...

  2. Linux常用命令之安装VMware10中安装CentOS 6.4

    笔者用过的Linux系统也就是现在主流的企业级linu系统RedHat跟CentOS,这边主要介绍下CentOS 6.4的安装 RedHat和CentOS差别不大,CentOS是一个基于RedHat  ...

  3. JAVA Day3

                                               分支与循环             char sex = in.next().charAt(0);   java中 ...

  4. 创建Thread类的子类

    package unit8; public class MyThreadTest { public static void main(String[] args) { MyThread t1 = ne ...

  5. CSS3动画属性animation的用法

    转载: 赞生博客 高端订制web开发工作组 » CSS3动画属性animation的用法 CSS3提供了一个令人心动的动画属性:animation,尽管利用animation做出来的动画没有flash ...

  6. X-UA-Compatible属性的解释

    问题描述: 代码如下: <meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE& ...

  7. 关于CSS动画效果的图片展示

    animation:帧动画 animation-name:定义绑定Keyframes的动画名称 @keyframes XXX 定义动画,里面是动画具体内容 animation-duration:过渡动 ...

  8. uva624 01背包要求输出路径

    You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o ...

  9. iOS Debug日志 viewhierarchy调试笔记

    Debut - View Debugging - Capture View Hierarchy 当视图没有正常显示时,用view hierarchy进行调试,查看左边的分支里有没有加载对应的视图. 如 ...

  10. iOS学习22之视图控制器

    1.自定义视图 1> 概述   定义视图:系统标准UI之外,自己组合而出的新的视图. 定义视图的优点: iOS提供了很多UI组件,借助它们我们可以实现不同的功能.尽管如此,实际开发中,我们还需要 ...