首页 > 解决方案 > 为什么这个 Azure SQL 查询非常慢?

问题描述

我有一个大约 100 万行的小表,我正在针对它运行以下查询。

SELECT *
FROM TillBasicData
WHERE companyid = 'BE_AA'
AND languagecode = 'eng'
AND noos14 LIKE '%09258384374953%';
--09258384374953,09258387354952

问题是执行需要将近 1 分钟。

我添加了以下索引以尝试加快速度

CREATE INDEX IX_TillBasicData
    ON dbo.tillbasicdata (companyid DESC, languagecode DESC, noos14 DESC);

这有点帮助,并将其缩短到大约 30 秒,但我仍然不明白为什么需要这么长时间,我只能假设它与 LIKE 语句有关,但我能做些什么来加快速度?

在这么小的表上,我假设查询在不到 1 秒的时间内执行。

标签: azuretsqlazure-sql-database

解决方案


这里有几个问题:

  • 您从表中选择的列数未知
  • 就像你说的,LIKE声明。

要进行适当的分析,最好查看执行计划,因为这是很常见的问题,所以我会说可能会发生两件事:

  • 根据您的情况进行全表扫描
  • 非聚集索引查找基于companyidandlanguagecode和一个过滤谓词,基于noos14和一个键查找运算符,它从表中检索不在索引中的所有其他列。

因此,为了解决您的问题,只需更改您的索引以包含所有必需的列并替换SELECT *为您需要的明确列列表。


推荐阅读