首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2005聚集索引查询速度

SQL Server 2005聚集索引查询速度
EN

Stack Overflow用户
提问于 2009-06-16 18:38:12
回答 1查看 717关注 0票数 4

我们的网站受到了很大的冲击,所以我们正在考虑优化一些现有的查询。

在研究这一点时,我们遇到了几个查询,当查询中有聚集索引的简单引用时,它们的执行计划大约快4-5倍……例如

如果这是旧查询:

代码语言:javascript
复制
SELECT ...
FROM myTable
WHERE categoryID =  @category 

根据SSMS中的执行计划,以下查询速度将提高4倍:

代码语言:javascript
复制
SELECT ...
FROM myTable
WHERE categoryID =  @category 
AND lotID = lotID

我们似乎无法理解这将如何使查询速度更快。聚集索引在lotID上,但是由于它在与自身进行比较,这有什么帮助呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-16 18:43:18

对我来说似乎很明显

第一个查询没有被聚集索引覆盖,而第二个查询是因为lotID不在第一个查询的WHERE子句中

您可能希望阅读SQL Server covering indexes以了解所有这些内容是如何工作的

您还需要了解聚集索引就是数据,表的所有数据都在聚集索引中。当您在具有聚集索引的表上创建非聚集索引时,非聚集索引将具有指向聚集索引的指针(因为这是其余数据所在的位置),除非您可以通过非聚集索引完全满足查询,在这种情况下将只使用非聚集索引...我现在停止漫谈

编辑

我读了,lotID = @lotID不是,lotID = lotID

有时,您可以通过执行where lotID >0 (选择您拥有的最小数字)来伪造聚集索引,这样就会得到一个seek

因此,如果你的最小lotID =1,并且lotID >0

你也可以看到搜索而不是扫描,我在这篇文章Is an index seek always better or faster than an index scan?中演示了IndexValue > '‘的位置

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1003230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档