中培伟业IT资讯频道
您现在的位置:首页 > IT资讯 > 数据库 > 数据的三种索引方式

数据的三种索引方式

2021-06-23 08:40:48 | 来源:中培企业IT培训网

通过前面一些对数据库文章的介绍,想必你也应该对数据库有了初步的了解。而数据库的几大检索方法今天想要和大家具体介绍介绍。堆、簇索引、非簇索引可能大家和小编一样陌生。不同的索引有着不同的特点。以及不同的优缺点。在使用不同的软件时,会有不同的检索方式所使用。在这个瞬息万变的时代背景下,数据库也在马不停蹄地更新以及发挥它独特的价值和作用。

一、堆

1、sqlserver在sysindexes表中查到对应的数据行

2、读取indid值(应为堆没有索引所以是0)后,sqlserver开始读取firstIAM值,获取堆的IAM的第一页(8KB)的位置。(IAM将堆的各个区域联接在一起)

3、sqlserver根据IAM提供的区域地址,一个区域一个区域的查找,一个数据页一个数据页的查找,直到获取所需的数据为止。

二、簇索引

1、sqlserver在sysindexes表中查到对应的数据行,找到indid为1后,sqlserver开始读取root列的值。(列值是根页面的地址)

2、找到根页面后开始搜索,比如要搜索的表是10条记录一页,这里是找“1981”这个值,将索引的值“1981”与根页面的索引比较。由于“1981”是在1900到2000之间。所以sqlserver开始搜索1900所在的中间页。

3、找到“1900”所在的中间页后,将索引值“1981”继续与中间页的索引比较,由于“1981”是在1980到1990之间。所以sqlserver开始搜索1980所在的数据页。(注意这一步是根据中间页找数据页)

4、找到“1980”所在的数据页后,将索引值“1981”继续与数据页的索引比较,很快就可以在这个数据页上找到“1981”的数据行了。

三、非簇索引

1、sqlserver在sysindexes表中查到对应的数据行,找到indid为后,值为2到251后,sqlserver开始读取root列值。

2、找到根页面后,将“1981”与根页面的索引比较,由于“1981”是在1900到2000之间。所以sqlserver开始搜索1900所在的中间页。(注意这一步是根据中间页找叶页面)

3、找到中间页后,将索引值“1981”继续与中间页的索引比较,由于“1981”是在1980到1990之间。所以sqlserver开始搜索1980所在的叶页面。

4、找到“1980”所在的叶页面后,继续叫索引值“1981”与叶页面上的关键字比较,在叶页面上找到关键字为“1981”的数据行ID。

5、根据数据行ID提供的数据页和数据行信息,定位到指定的数据页和数据行,找到“1981”这条记录是“晶”的。

学海无涯苦作舟,不进则退。计算机行业有许多东西都是值得我们去了解和挖掘的。想要了解更多数据库的信息,请继续关注中培伟业。

相关阅读