MS SQL Server 2014中的查询需要很长时间,尽管覆盖索引



我正在使用MS SQL SERVER 2014托管多个应用程序并尝试运行以下查询:

SELECT distinct Col_1,Col_2,Col_3 FROM TABLE WHERE  col_3 LIKE '%criteria%'

Col_1上有一个聚集索引,Col_2和Col_3上有一个非聚集索引。 但是,Col_3上的非聚集索引包括不属于此查询的另一列。

表中的总行数为 115,000,此查询返回的行数为 1132。

我尝试运行它五次,以下是每次尝试所需的时间

1:32,
1:51,
1:52,
1:50,
2:05

我检查了服务器允许的并发连接数,这是无限的(指定了 0(。

我检查了分配给服务器的最小和最大内存为 0 和 4096 MB。

问:为什么行数较少的查询需要花费如此多的时间,尽管已经为查询中的所有列创建了索引。

没有普通索引可以提供帮助,因为索引结构无法帮助使用前导通配符的LIKE查询。

如果要查询单词1 及其在您的环境中可接受的内容,则可以在 col_3 上启用全文搜索。全文索引可以提供帮助,因为它是面向单词的,旨在支持CONTAINS样式查询。


1除非这是一个"关键字"样式的列,在这种情况下,它根本不应该像这样存储,而应该被重新建模,以便每个关键字都包含在引用当前正在讨论的表格中的某个表中自己的行中。

最新更新