当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – SQL Server 2005聚簇索引查询速度

来源:互联网 收集:自由互联 发布时间:2021-06-22
我们的网站变得非常困难,所以我们正在考虑优化一些现有的查询. 在研究这个时,我们遇到了几个查询,当查询中有一个简单的聚集索引引用时,执行计划的速度提高了4-5倍…例如 如果这是
我们的网站变得非常困难,所以我们正在考虑优化一些现有的查询.

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

如果这是旧查询:

SELECT ...
FROM myTable
WHERE categoryID =  @category

根据SSMS中的执行计划,以下查询将快4倍:

SELECT ...
FROM myTable
WHERE categoryID =  @category 
AND lotID = lotID

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

对我来说似乎很明显

第一个查询不包含在聚簇索引中,而第二个查询则不在第一个查询的WHERE子句中

您可能需要阅读SQL Server covering indexes以了解这一切是如何工作的

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

编辑

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

有时你可以通过执行lotID> 0(选择你拥有的最低数字)来伪造聚集索引,然后你会得到一个搜索

因此,如果您的最小lotID = 1并且您添加了
AND lotID> 0

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

网友评论