同样的表,同样的索引,同样的sql语句,sql2000/2005执行计划却不相同

分别在sql2000/2005建了同样的表:
create table Student
(
    ID int identity(1,1) primary key,
    Name nvarchar(20),
    Age int
)

都在Name字段上建了个非聚集不唯一的索引(IX_Name),执行同样的语句:

select * from student where name like 'zhang%'

sql2000显示估计的执行计划:


sql2005显示估计的执行计划:


很明显,sql2000使用了IX_Name,sql2005却没有使用IX_Name。网上的答案是:当数据量少时,sql2005优化器计算出还没有要用到索引的程度,此时选择使用聚集索引扫描了。

随即插入10w条数据,sql2005估计的执行计划:



这回用上IX_Name了!

评论: 0 | 引用: 0 | 查看次数: 3964
发表评论
登录后再发表评论!