2

我有一张大约有 2000 万行的表格。该数据库托管在 Azure 上。(S2层)我在其中一列上设置了全文索引(该列包含Counties,States,Cities,Towns,Townships,Vills,Schools,College等)。

这是一个选择语句的示例:

SELECT * FROM dbo.[Table_Name]
WHERE CONTAINS(Value,'"clair county" OR "alabama" OR "miami" OR "talladega county"
OR "jefferson county" OR "shelby county"  OR "colorado")

每当我在常规 SQL Server(不是天蓝色)上启动时,我都会在 1 秒内获得约 35k 行。但在 azure 上大约需要 6 分钟。需要这么多的问题是因为它达到了 DTU 最大值。当这个查询执行时,它只需要大约 1% 的 CPU 使用率和 100% 的数据 IO 使用率(大量读取)。所以我真的很想优化这种查询。即使在 p11 定价层上,它也比常规 SQL Server Developer Edition 慢得多。

以下是我能想到的几个解决方案:

  1. 停止使用 SQL Azure 并切换到 Azure VM,我可以在其中托管常规 SQL Server。我认为由于大量读取而达到 DTU 限制时的问题可能会得到解决

  2. 优化查询。我认为应该有一种方法可以创建排除大约 95% 的行的查询。这是上面指定的行查询示例返回:Jefferson Union High School District, Miami-Yoder School District 60-JT, Upper Saint Clair School District, Louisville/Jefferson County。当 SQL Server 返回仅包含特定单词中的单词的行时,也许有一种创建查询的方法,所以我没有得到,因为在查询中未指定Jefferson Union High School Districtwords Union, High, 。School

  3. 重组表以更改读取次数。(不确定是否可以)

谢谢

4

0 回答 0