项目中有个用户表,其中有3个字段:id、loginid、username
id是自增字段,主键
跟用户表关联的其它表,分区时都是通过用户表的id%5取模,来使数据均匀分布到5个文件组而用户表的3个字段,都经常作为单个条件进行检索
那么用户表如果也把id作为分区键,在检索条件为id时,可以增加分区键的条件
而通过loginid或username检索时,无法知道分区键,对检索性能会提高还是降低呢?
因为目前5个文件组都在同一个磁盘的同一分区中如果用户表把id作分区键不合适,应该用什么作分区键,能比较好的提高性能呢?

解决方案 »

  1.   

    谢谢您的答复,分区键肯定是作为聚集索引之一了也就是说:
    select * from 用户表 where id=xxx and 分区键=xxx%5
    会比
    select * from 用户表 where id=xxx 
    效率高,是这样吧?那么
    select * from 用户表 where loginid = xxx
    这样的语句也会有效率提升吗
     
      

  2.   

    select * from 用户表 where id=xxx and 分区键=xxx%5
    不会比
    select * from 用户表 where id=xxx  
    效率高,应该一样的。如果你的id索引建立在分区,效率比建立在一般文件组的效率高。
      

  3.   

    明白
    目前这个表就是考虑把
    id和分区键作为主键和聚集索引但是其它从表,这个id就不是主键了
    查询时就必须增加分区键作为条件了
      

  4.   

    全部看完 :) 
    http://msdn.microsoft.com/zh-cn/library/ms345146%28v=sql.90%29.aspx
      

  5.   

    如果不是SSD或磁盘阵列,表分区除了insert等修改命令速度有一些提升外,select速度反而会下降很多。