我想通过在索引中添加包含列来提高查询性能,现有一个疑问:
假设我对a、b两个字段分别创建索引,并把c作为a索引的包含列,就像这样:
create index ix_a on mytable(a) include(c);
create index ix_b on mytable(b);
那么像下面这样的涉及到了a和b两个索引的查询是否会扫描物理表?
select c from mytable where a > 0 and b = 'x'
换种话说,这种情况下,a索引的包含列是否会起到改进性能的作用?
我的感觉是不用扫描全表,因为找到a就得到了c,但是我对数据库内部的实现不是是否否清楚,建议楼主读一下sql server相关的书,或者干脆做个试验,对比一下执行所用时间吧。
应该不会全表扫描,楼主可以看下sql执行计划。
两个字段分别建索引,不如联合索引效率高。