gpt4 book ai didi

performance - SQL Server 2005 聚集索引查询速度

转载 作者:行者123 更新时间:2023-12-05 00:43:23 26 4
gpt4 key购买 nike

我们的网站受到重创,因此我们正在考虑优化我们现有的一些查询。

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

如果这是旧查询:

SELECT ...
FROM myTable
WHERE categoryID = @category

根据 SSMS 中的执行计划,以下查询会快 4 倍:
SELECT ...
FROM myTable
WHERE categoryID = @category
AND lotID = lotID

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

最佳答案

对我来说似乎很明显

您的第一个查询未包含在聚集索引中,而第二个查询是因为 lotID 不在第一个查询的 WHERE 子句中

您可能想阅读 SQL Server covering indexes看看这一切是如何运作的

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

编辑

我读了 AND lotID = @lotID
NOT AND lotID = lotID

有时您可以通过执行 where lotID > 0 (选择您拥有的最低数字)来伪造聚集索引,并且您将获得一个搜索

因此,如果您最小的 lotID = 1 并且您添加
并且批次 ID > 0

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

关于performance - SQL Server 2005 聚集索引查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1003230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com