我有一张大约有 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 慢得多。
以下是我能想到的几个解决方案:
停止使用 SQL Azure 并切换到 Azure VM,我可以在其中托管常规 SQL Server。我认为由于大量读取而达到 DTU 限制时的问题可能会得到解决
优化查询。我认为应该有一种方法可以创建排除大约 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 District
wordsUnion
,High
, 。School
重组表以更改读取次数。(不确定是否可以)
谢谢