项目中有个用户表,其中有3个字段:id、loginid、username
id是自增字段,主键
跟用户表关联的其它表,分区时都是通过用户表的id%5取模,来使数据均匀分布到5个文件组而用户表的3个字段,都经常作为单个条件进行检索
那么用户表如果也把id作为分区键,在检索条件为id时,可以增加分区键的条件
而通过loginid或username检索时,无法知道分区键,对检索性能会提高还是降低呢?
因为目前5个文件组都在同一个磁盘的同一分区中如果用户表把id作分区键不合适,应该用什么作分区键,能比较好的提高性能呢?
id是自增字段,主键
跟用户表关联的其它表,分区时都是通过用户表的id%5取模,来使数据均匀分布到5个文件组而用户表的3个字段,都经常作为单个条件进行检索
那么用户表如果也把id作为分区键,在检索条件为id时,可以增加分区键的条件
而通过loginid或username检索时,无法知道分区键,对检索性能会提高还是降低呢?
因为目前5个文件组都在同一个磁盘的同一分区中如果用户表把id作分区键不合适,应该用什么作分区键,能比较好的提高性能呢?
select * from 用户表 where id=xxx and 分区键=xxx%5
会比
select * from 用户表 where id=xxx
效率高,是这样吧?那么
select * from 用户表 where loginid = xxx
这样的语句也会有效率提升吗
不会比
select * from 用户表 where id=xxx
效率高,应该一样的。如果你的id索引建立在分区,效率比建立在一般文件组的效率高。
目前这个表就是考虑把
id和分区键作为主键和聚集索引但是其它从表,这个id就不是主键了
查询时就必须增加分区键作为条件了
http://msdn.microsoft.com/zh-cn/library/ms345146%28v=sql.90%29.aspx