zoukankan      html  css  js  c++  java
  • 聚集索引和非聚集索引的区别

    原本是想写关于SQL数据优化方面的文章的,现在网上看了下, 被“误入歧途”到关于:聚集索引和非聚集索引的区别上,遂研究了下,看懂了不少,现写下来,记录下   聚集索引:聚集索引既然名字中有个“聚集”,说明突出在“聚集”两个字上。可以比较形象的说成是一个词典的拼音索引,比如我要查:东方的“东”字,但是我不知道东字怎么写,这时比较快捷的方法就是,直接根据拼音“dong”来查到大概是哪一页开始的,然后再找。这个“拼音的索引”就相当于“聚集索引”。 非聚集索引:但也可能是这种情况,我只知道他是怎么写的,但是不知道怎么念,这时我们会根据字的部首来查这个字,如部首“∕”,那你可能查到的是“年”,也可能是“爱”,可能是“受”,这样你查询的结果就相当零散和不连续,效率就十分低下,这就是“非聚集索引”   下面来说下官方的说法:   聚集索引: 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。   适用情况 1、含有大量非重复值的列。 2、使用BETWEEN,>,>=,<<=返回一个范围值的列 3、被连续访问的列 4、返回大型结果集的查询 5、经常被使用连接或GROUP BY子句的查询访问的列 下面的表总结了何时使用聚集索引或非聚集索引
    动作描述 使用聚集索引 使用非聚集索引
    列经常被分组排序
    返回某范围内的数据 不应
    一个或极少不同值 不应 不应
    小数目的不同值 不应
    大数目的不同值 不应
    频繁更新的列 不应
    外键列
    主键列
    频繁修改索引列 不应
     
    写个博客不容易,请转载的时候备注下原文出处,谢谢
    作者:keepnode
    博客地址:http://www.cnblogs.com/woaic
    每件事到最后都是好事,如果不是好事,说明还没有到最后
    =========================
  • 相关阅读:
    BZOJ3779: 重组病毒
    BZOJ3112 [ZJOI2013]防守战线
    BZOJ4011 [HNOI2015]落忆枫音
    BZOJ2726 [SDOI2012]任务安排
    BZOJ1492 [NOI2007]货币兑换
    BZOJ1597 [USACO2008]土地购买
    BZOJ3611 [HEOI2014]大工程
    BZOJ3991 [SDOI2015]寻宝游戏
    BZOJ3675 [APIO2014]序列分割
    BZOJ1010 [HNOI2008]玩具装箱
  • 原文地址:https://www.cnblogs.com/woaic/p/3943060.html
Copyright © 2011-2022 走看看