zoukankan      html  css  js  c++  java
  • 搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

    聚集索引介绍

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

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

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

      可考虑将聚集索引用于:

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

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

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

      创建聚集索引

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

      -或-

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

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

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

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

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

      非聚集索引介绍

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

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

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

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

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

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

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

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

  • 相关阅读:
    面试题23:从上往下打印二叉树
    面试题22:栈的压入、弹出序列
    【opencv基础】imwrite函数与图像存储质量
    【c++基础】从json文件提取数据
    【图像处理基础】LBP特征
    【机器学习基础】SVM实现分类识别及参数调优(二)
    【leetcode】14-LongestCommonPrefix
    【leetcode】13-Roman2Integer
    【leetcode】9-PalindromeNumber
    【leetcode】7-ReverseInteger
  • 原文地址:https://www.cnblogs.com/chenying99/p/2539989.html
Copyright © 2011-2022 走看看