gpt4 book ai didi

sql-server - SQL Server 上多列查询的多列索引优化

转载 作者:行者123 更新时间:2023-12-03 16:25:47 26 4
gpt4 key购买 nike

我有一个表 [table],其中有两列需要过滤:[column1] 和 [column2]。

在我的程序中,我执行如下查询:

select * from [table] where [column1] = 'foo' and [column2] = 'bar';

哪个更快:

  1. 创建两个索引,每列一个。 ([第 1 列] 和 [第 2 列])
  2. 创建一个包含两列的索引。 ([列1]+[列2])

这个问题困扰了我一段时间,我不知道查询优化是如何工作的,也不知道SQL Server如何使用创建的索引来加速查询。

最佳答案

对于此查询,第二个总是更快 - 但您需要将更具选择性的查询放在第一位(按索引顺序)以获得更多好处。唯一的异常(exception)是,如果出于性能原因,SQL 决定使用聚集索引,因此会忽略非聚集索引。

两个值的组合创建了更具选择性的标准。它还有助于提高性能,因为没有 BOOKMARK LOOKUP覆盖索引所需。

书签查找是主要性能下降的根源,这就是为什么覆盖索引总是优于 2 个索引的原因。

更新

请记住,如果您的索引为column1+column2,则仅对column2进行搜索无法使用此索引,因此您还需要在column2上有一个单独的索引。

关于sql-server - SQL Server 上多列查询的多列索引优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194208/

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