关于索引。求助 有个表,里面建了非聚集索引,可是select的时候,为什么是索引scan,而不是索引seek呢?求助。语句为:select * from sPurchase_201209 where Pur_Item_Code = 2369409求助~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Alter index all on sPurchase_201209 Rebuild with (fillfactor=90, sort_in_tempdb = ON)已使用上述语句rebuild索引,但是执行计划里还是索引scan。。为毛 我在别的索引列上做条件写查询,用的都是索引seek。。这个列真怪 问题1、可能统计信息过时。问题2、你的数据分布太零散,导致需要scan才能找到所有数据 清空缓存dbcc dropcleanbuffers 你强制使用索引对比下IOselect * from sPurchase_201209 with(index=IndexNAme) where Pur_Item_Code = 2369409可能是查询优化器给你又花了,scan的代价并不一定比seek高 可能是查询优化器给你优化了,scan的代价并不一定比seek高写错字了 用with index确实是索引seek。。不用with index就是索引scan,真蛋疼。。看来要加上with index了。。感谢。。结贴算了 强制使用with很容易出问题。先要找出为什么scan才是根本 你急啥,这里是查询优化器给你优化后的结果,查询优化器认为“scan比seek代价小”就选择了scan你强制使用索引,结果页不一定最优啊原因可能是索引碎片,或者是数据分布导致,你的查询条件的数据在整个表中分布的太多 **********************请问数据库镜像的问题*************** 新手疑问 存储过程中字符串如何连接?? SQL SERVER存储过程中如何产生五位数的随机整数?? 我想给数据库增加一个login用户如何办? winXP不能安装MS-SQL2000么? sql 数据更新问题 截断日志出现的问题 存储过程的问题 数据库replication是否可以设置复制表的顺序? 一个sqlserver复制的问题 结果转换
已使用上述语句rebuild索引,但是执行计划里还是索引scan。。为毛
问题2、你的数据分布太零散,导致需要scan才能找到所有数据
dbcc dropcleanbuffers
你强制使用索引对比下IOselect * from sPurchase_201209 with(index=IndexNAme)
where Pur_Item_Code = 2369409可能是查询优化器给你又花了,scan的代价并不一定比seek高
你强制使用索引,结果页不一定最优啊
原因可能是索引碎片,
或者是数据分布导致,你的查询条件的数据在整个表中分布的太多