对纵表和横表的userid建立主键或索引.那么查询一般来说是纵表快. 因为: 纵表 select * from 纵表 where key = @key and value = @value 横表 select * from 横表 where (key1 = @key and value1 = @value) or (key2 = @key and value2 = @value) ... or (key10 = @key and value10 = @value)
上为按key和value来查,是纵表快. 如果是按userid来查,肯定是横表快.
设为主键就自动为聚集索引了。查询纵表:SELECT * from col where userid ='08613575174704' 查询横表:SELECT * from row where userid ='08613575174704' 上面两个语句分别执行后,读取次数都是一样的: 逻辑读取 4 次,物理读取 4 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次时间上每次执行都有不同,但大部分时候查询纵表的速度更快。我怀疑是不是因为纵表只有三个列,其中两个列都已经在索引里面了,所以会快些??
对纵表和横表的userid建立主键或索引.那么查询一般来说是纵表快.
因为:
纵表 select * from 纵表 where key = @key and value = @value
横表 select * from 横表 where (key1 = @key and value1 = @value) or (key2 = @key and value2 = @value) ... or (key10 = @key and value10 = @value)
如果是按userid来查,肯定是横表快.
设为主键就自动为聚集索引了。查询纵表:SELECT * from col where userid ='08613575174704'
查询横表:SELECT * from row where userid ='08613575174704'
上面两个语句分别执行后,读取次数都是一样的:
逻辑读取 4 次,物理读取 4 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次时间上每次执行都有不同,但大部分时候查询纵表的速度更快。我怀疑是不是因为纵表只有三个列,其中两个列都已经在索引里面了,所以会快些??