码迷,mamicode.com
首页 > 编程语言 > 详细

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

时间:2018-01-22 14:14:01      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:右击   class   sof   快捷   let   操作   gpo   存储   表设计   

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

聚集索引介绍

  在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。

  如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。

  聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。

  可考虑将聚集索引用于:

  1.包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。

  2.使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。

  3. 返回大结果集的查询。

  创建聚集索引

  在数据库关系图中选择要创建索引的表,右击该表,然后从快捷菜单中选择"索引/键"命令。

  -或-

  为要创建索引的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"索引/键"命令。

  创建新索引。有关详细信息,请参见创建索引。

  若要修改现有索引,请从"选定的索引"列表中选择该索引。

  选择"创建为 CLUSTERED"复选框。

  当保存表或关系图时,索引即创建在数据库中。

  非聚集索引介绍

  非聚集索引与聚集索引一样有 B 树结构,但是有两个重大差别:

  数据行不按非聚集索引键的顺序排序和存储。

  非聚集索引的叶层不包含数据页。

  相反,叶节点包含索引行。每个索引行包含非聚集键值以及一个或多个行定位器,这些行定位器指向有该键值的数据行(如果索引不唯一,则可能是多行)。

  非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。在 Microsoft? SQL Server? 2000 中,非聚集索引中的行定位器有两种形式:

  如果表是堆集(没有聚集索引),行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。整个指针称为行 ID。

  如果表没有聚集索引,或者索引在索引视图上,则行定位器就是行的聚集索引键。如果聚集索引不是唯一的索引,SQL Server 2000 将添加在内部生成的值以使重复的键唯一。用户看不到这个值,它用于使非聚集索引内的键唯一。SQL Server 通过使用聚集索引键搜索聚集索引来检索数据行,而聚集索引键存储在非聚集索引的叶行内。

  由于非聚集索引将聚集索引键作为其行指针存储,因此使聚集索引键尽可能小很重要。如果表还有非聚集索引,请不要选择大的列作为聚集索引的键。

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

标签:右击   class   sof   快捷   let   操作   gpo   存储   表设计   

原文地址:https://www.cnblogs.com/timdes1/p/8328438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!