从2000万条开房数据谈检索ITeye - 乐橙lc8

从2000万条开房数据谈检索ITeye

2019-01-11 14:38:31 | 作者: 凯时 | 标签: 数据,索引,包括 | 浏览: 710

看到曾经一个帖子 。(依照规则,先把福利贴上 )

 

一、导言

对数据库索引的重视从未淡出我的们的评论,那么数据库索引是什么样的?集合索引与非集合索引有什么不同?期望本文对各位同仁有必定的协助。有不少存疑的当地,诚意期望各位不吝赐教纠正,共同进步。[最近主页之争沸反盈天,也不知道这个放在这适宜么,苦劳?劳绩?……]

 

 

二、B-Tree

咱们常见的数据库系统,其索引运用的数据结构多是B-Tree或许B+Tree。例如,MsSql运用的是B+Tree,Oracle及Sysbase运用的是B-Tree。所以在最开端,简略地介绍一下B-Tree。

 

B-Tree不同于Binary Tree(二叉树,最多有两个子树),一棵M阶的B-Tree满意以下条件:
1)每个结点至多有M个孩子;
2)除根结点和叶结点外,其它每个结点至少有M/2个孩子;
3)根结点至少有两个孩子(除非该树仅包括一个结点);
4)一切叶结点在同一层,叶结点不包括任何关键字信息;
5)有K个关键字的非叶结点刚好包括K+1个孩子;

别的,关于一个结点,其内部的关键字是从小到大排序的。以下是B-Tree(M=4)的样例:

  

1)非集合索引与查询操作

针对上图,假如咱们相同查找“Green”,那么一次查询操作将包括以下IO:3个索引页的读取+1个数据页的读取。相同,因为缓存的联系,实在的IO实践或许要小于上面列出的。

 

 

2)非集合索引与刺进操作

假如一张表包括一个非集合索引但没有集合索引,则新的数据将被刺进到最末一个数据页中,然后非集合索引将被更新。假如也包括集合索引,该集合索引将被用于查找新行即将处于什么方位,随后,集合索引、以及非集合索引将被更新。

 

 

3)非集合索引与删去操作

假如在删去指令的Where子句中包括的列上,建有非集合索引,那么该非集合索引将被用于查找数据行的方位,数据删去之后,坐落索引叶子上的对应记载也将被删去。假如该表上有其它非集合索引,则它们叶子结点上的相应数据也要删去。

 

假如删去的数据是该数所页中的仅有一条,则该页也被收回,一起需求更新各个索引树上的指针。

 

因为没有主动的兼并功用,假如应用程序中有频频的随机删去操作,终究或许导致表包括多个数据页,但每个页中只要少数数据。

 

 

6.索引掩盖

索引掩盖是这样一种索引战略:当某一查询中包括的所需字段皆包括于一个索引中,此刻索引将大大进步查询功能。

 

包括多个字段的索引,称为复合索引。索引最多能够包括31个字段,索引记载最大长度为600B。假如你在若干个字段上创建了一个复合的非集合索引,且你的查询中所需Select字段及Where,Order By,Group By,Having子句中所触及的字段都包括在索引中,则只查找索引页即可满意查询,而不需求拜访数据页。因为非集合索引的叶结点包括一切数据行中的索引列值,运用这些结点即可回来真实的数据,这种状况称之为“索引掩盖”。

 

在索引掩盖的状况下,包括两种索引扫描:
A)匹配索引扫描
B)非匹配索引扫描

 

 

1)匹配索引扫描

此类索引扫描能够让咱们省去拜访数据页的过程,当查询仅回来一行数据时,功能进步是有限的,但在规模查询的状况下,功能进步将随成果集数量的增加而增加。

 

针对此类扫描,索引有必要包括查询中触及的的一切字段,别的,还需求满意:Where子句中包括索引中的“引导列”(Leading Column),例如一个复合索引包括A,B,C,D四列,则A为“引导列”。假如Where子句中所包括列是BCD或许BD等状况,则只能运用非匹配索引扫描。

 

 

2)非装备索引扫描

正如上述,假如Where子句中不包括索引的扶引列,那么将运用非装备索引扫描。这终究导致扫描索引树上的一切叶子结点,当然,它的功能一般仍强于扫描一切的数据页。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4

    Redis协议ITeye

    协议,一个,指令
  • 5
  • 6
  • 7

    Oracle Index 的三个问题ITeye

    索引,运用,数据
  • 8

    检查sqlserver的端口号ITeye

    端口号,能够,看到
  • 9
  • 10

    oracle中userITeye

    字段,运用,数据