美文网首页
oracle-索引2

oracle-索引2

作者: 扫地专业高级研究生 | 来源:发表于2022-05-12 23:18 被阅读0次

数据库版本:oracle12c

索引三个主要特性的应用:

1,索引的深度低:前面我们说过btree的深度一般都是2到3层左右,而如果使用索引进行查询的时候,则仅仅需要逻辑读3个block就可以找到要查询的数据的rowid了,然后回表一次查询到最后的数据,也就是一般的一条数据的查询是这样的。但如果出现了一些特殊情况,比如比如,我们是范围查询,而且数据量很大,那是否还适合用索引查询叻?答案是不一定,在很多情况下,如果索引查询的结果不超过一半以上,并且数据量不大的话,索引查询还是比全表扫描快。有些情况则并不,特别是将近查询出整张表的情况,已经确定要全表读了,就不需要在浪费时间去一个个的走索引了,走索引也会耗时间,特别是跳跃索引查询,所以在使用索引的时候,还是的分析我们的查询的具体情况。分析表的结构。

另外索引并不意味着更好更快,例如一张表只有一个字段,这个时候索引的大小比表自身的大小还大,就不适合建立索引了。

2,索引储存键值

要说明这点,主要是为了避免回表的情况,前面说过非聚集稠密索引的情况,就是几乎每个索引都需要储存一个物理地址的情况。在这里就是rowid的无序的情况,如果索引查询出的结果的rowid是无序的,导致每个rowid指向的块是分散的,那么对于索引查询,实际后面的操作仍然需要读很多的block,那效率仍然是低的,所以在使用的索引的时候,如果是要范围大量数据,最好是range范围查询,不要iterlist这类的查询,它会导致回表次数过多。当然如果要查询的结果列正好是索引列,这个时候就不需要去读数据库文件了,直接依靠索引文件得到结果,就不用回表,也就是索引全覆盖的情况,这个时候索引仍然是高效的。

3,有序

对于统计,比如count(*),索引既然是对全表的某列建立的,那么那列的行数当然也是索引的保存的行数,也就是整个表的行数,但要考虑一个情况就是如果索引列为null的情况,当索引列有null值的时候,索引不会储存这个列值到索引文件中,也就是索引无法统计带有null的列值的行,执行count(*),仍然是全表扫描,这个时候就显现出非空列上建立索引的好处了,也好在我们几乎对每张表都建立主键,主键是索引并且是非空的,也就避免了无法确定是否空行的情况了。另外在执行min和max的时候,如果是在索引列上的运算,那索引仅需要取最前或者最后一行,因为他是有序的,所以min和max在索引上运算是和表的数据量几乎无关,因为他只需要读索引的高度次的block即可。

4,回表

另外如果要查询索引的聚集的,可以使用“select clustering_factor from user_indexs where index_name = ‘xxx’”来比较,如果这个值越大,证明索引越稠密,如果这个值越小证明这个索引越稀疏。依靠这个值,我们可以大概的知道某些查询的效率。这个值的大小,主要是受表中block中的每一个行的对应的索引列是否有序度有关,如果是零散的,那这个值就越高。比如你先插入了个1000,然后又依次插入2,300,30000,4这种无序的凌乱的数据,就导致每个索引的rowid和索引的顺序不一致,回表就会很慢。而另外的一种情况,如果你是依次插入1,2,3,4,5这样的有序数据,索引和rowid的顺序是一致的,那回表的时候,如果是范围查询,会快很多。

相关文章

  • oracle-索引2

    数据库版本:oracle12c 索引三个主要特性的应用: 1,索引的深度低:前面我们说过btree的深度一般都是2...

  • Oracle-索引

    概述 Indexes are optional structures associated with tables...

  • oracle-索引3

    数据库版本:oracle12c 前几部分都是说的关于索引的理论,今天就主要来聊聊在日常使用过程中,我们该怎么使用这...

  • oracle-索引(简)

    对于所有开发工程师(农民工)来说,数据库索引简直就是神器,遇事不决先建立索引再说。先不管建立索引有什么影响,只要有...

  • 在Windows中 基于Oracle GoldenGate (O

    Oracle GoldenGate Windows平台oracle->oracle单向数据同步,试验环境: 一、O...

  • Oracle GoldenGate 之 Oracle ->

    新手安装配置请参考:在Windows中 基于Oracle GoldenGate (OGG)进行Oracle->Or...

  • Oracle GoldenGate 之 SQL Server -

    新手安装配置请参考:在Windows中 基于Oracle GoldenGate (OGG)进行Oracle->Or...

  • Windows、Oracle数据库以及数据库管理工具的安装部署

    1.安装包 Oracle-> 链接:https://pan.baidu.com/s/106VmqnfyJAQw7A...

  • Mysql的索引

    1) 查看索引 2) 创建索引 3) 删除索引 +++++++++++++++++++++++++++++++++...

  • 2.索引

    索引 1.双下标索引 2.单下标索引 3.双下标索引转换为单下标索引单下标索引=sub2ind(size,m,n)...

网友评论

      本文标题:oracle-索引2

      本文链接:https://www.haomeiwen.com/subject/pxaeurtx.html