我在網上看到別人總結的一句話:    聚集索引是如此的重要和珍贵,所以笔者总结了一下,一定要将聚集索引建立在:  1、您最频繁使用的、用以缩小查询范围的字段上;  2、您最频繁使用的、需要排序的字段上。我在其文章上還看到另一句話:
    
    建立聚集索引要求的:“既不能绝大多数都相同,又不能只有极少数相同”的规则。那我做的系統幾乎都要按照時間搜索資料,而且時間還是帶秒的"2009-05-25 08:10:50"
那豈不是違背了“不能極少數相同”的原則?因為表中所有的時間都不相同....
我能不能把聚集索引設定在時間這一欄上?作者寫的這兩句話有沒有矛盾?

解决方案 »

  1.   

    不要在日期字段上加聚集索引,因为这个字段的实际内容并不是这样的:2009-05-25 08:10:50
    看看这个你就明白了。
    select cast(getdate() as varchar)
    /*
    ------------------------------ 
    05 26 2009 11:52AM(所影响的行数为 1 行)
    */
      

  2.   

    索引一般不建立在单纯的时间字段上。尤其是在SMALLDATETIME或者DATETIME的数据类型上就更没有必要了。
    楼主说的不错。聚集索引的作用确实
     1、您最频繁使用的、用以缩小查询范围的字段上; 
     2、您最频繁使用的、需要排序的字段上。至于"既不能绝大多数都相同,又不能只有极少数相同",楼主可以换个思路来理解。
    楼主查时间肯定不会查时间='2009-05-25 08:10:50'。所以楼主并不需要在时间这列上加索引。比如字段A, B, C 三个字段组合起来就能定位一条记录,那么就直接把A,B,C 设置为聚集索引。
    就OK了。
      

  3.   

    如果A,B,C唯一確定一條記錄,將A,B,C上設置為聚集索引的話就和“不能只有极少数相同”相違背了.
      

  4.   

    這個人說的http://database.ctocio.com.cn/tips/272/7588272_2.shtml   原文:从建表的语句中,我们可以看到这个有着1000万数据的表中fariqi字段有5003个不同记录。在此字段上建立聚合索引是再合适不过了。在现实中,我们每天都会发几个文件,这几个文件的发文日期就相同,这完全符合建立聚集索引要求的:“既不能绝大多数都相同,又不能只有极少数相同”的规则。由此看来,我们建立“适当”的聚合索引对于我们提高查询速度是非常重要的。
      

  5.   

    lz还是先看看聚集索引的相关知识吧,简单说一句,聚集索引的叶级别存放的就是数据本身。
    lz看的那篇文章很多真是误人子弟。
      

  6.   

    datetime不要設索引了~~一般都設在id上~~比如 select id,datetime from table where datetime between '2009-05-01' and '2009-05-10'這個索引還是有用的如果 :select datetime from table where datetime between '2009-05-01' and '2009-05-10'那索引就沒用了~~