首页 新闻 搜索 专区 学院

sql server 2005 一个索引多个字段,字段的排列顺序对搜索有什么影响??

0
[已解决问题] 解决于 2014-05-27 16:16
比如有 a b 两列 ,如果 对a b同时过滤  a先过滤 b后过滤 那么 建立一个索引时 a和b哪个先后有区别吗?

建立一个索引 包括a b两列和建立两个索引分别有a 和b 有区别吗??
koi的主页 koi | 初学一级 | 园豆:2
提问于:2014-02-17 10:14
< >
分享
最佳答案
0

我先简单地经验性地回答一下:

1)a和b谁先谁后的影响可以忽略不计。

2)如果查询时在where中用到a,b这两个列,建立包含这两个列的索引,查找速度会更快。

奖励园豆:5
dudu | 高人七级 |园豆:39035 | 2014-02-17 10:46
其他回答(3)
0

我觉得是有区别的。

假设索引MyIndex包含a、b两列(a在前,b在后)。那么如果查询条件中同时包含a和b,会直接用到这个索引,而且是index seek。如果查询条件中只包含a,那么也会直接用到这个索引,而且是index seek。但是如果查询条件只包含b的时候,假设没有其它额外索引可供使用(比如b上建立的单独索引),那么也会使用MyIndex这个索引,但是就是index scan而不是index seek了。而index scan的速度明显小于index seek。

ocean | 园豆:824 (小虾三级) | 2014-02-17 15:03
0

建立一个索引,A在前B在后.这时如果你的查询条件只有B时,这个索引是无法使用的

吴瑞祥 | 园豆:28820 (高人七级) | 2014-02-17 16:48

不一定不会用到,如果没有其他索引可用,当查询B时会scan index的

支持(0) 反对(0) ocean | 园豆:824 (小虾三级) | 2014-02-18 13:28
0

只是说有a就能用到索引,这种楼主可能还是不能理解,楼主先理解索引的结构,B树,它是怎么查找的,为什么什么提速。

楼主可以参考我三写的索引的三篇博文,希望对你有帮助。

gw2010 | 园豆:1399 (小虾三级) | 2014-02-18 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册