为什么这个Azure SQL查询非常慢?

时间:2018-05-18 03:57:37

标签: azure tsql azure-sql-database

我有一个大约1百万行的小表,我正在运行以下查询。

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秒的时间内执行。

1 个答案:

答案 0 :(得分:3)

这里有几个问题:

  • 您从表中选择的列数未知
  • 就像你说的那样,LIKE陈述。

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

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

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

相关问题