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 通过使用聚集索引键搜索聚集索引来检索数据行,而聚集索引键存储在非聚集索引的叶行内。

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

  • 相关阅读:
    Mybatis的XML中数字不为空的判断
    初步使用VUE
    Vue中实现菜单下拉、收起的动画效果
    Docker For Windows时间不对的问题
    freemarker使用自定义的模板加载器通过redis加载模板
    .net core 打印请求和响应的内容
    codedecision P1113 同颜色询问 题解 线段树动态开点
    洛谷P2486 [SDOI2011]染色 题解 树链剖分+线段树
    洛谷P3150 pb的游戏(1)题解 博弈论入门
    codedecision P1112 区间连续段 题解 线段树
  • 原文地址:https://www.cnblogs.com/timssd/p/8328438.html
Copyright © 2011-2022 走看看