2

約2000万行のテーブルを取得しました。データベースは Azure でホストされています。(S2 層) 列の 1 つにフルテキスト インデックスを設定しました (列には郡、州、都市、町、町、村、学校、大学などが含まれます)。

select ステートメントの例を次に示します。

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 (Azure ではない) を起動すると、1 秒以内に最大 35,000 行が取得されます。ただし、Azure では約 6 分かかります。なぜそんなにかかるのかという問題は、DTU の最大値に達するためです。このクエリを実行すると、CPU 使用率は約 1%、データ IO 使用率は 100% (大量の読み取り) しかかかりません。ですから、そのような種類のクエリを最適化したいのです。p11 価格レベルでも、通常の SQL Server Developer Edition よりもはるかに遅くなります。

ここに私が考えることができるいくつかの解決策があります:

  1. SQL Azure の使用をやめて、通常の SQL Server をホストできる Azure VM に切り替えます。大量の読み取りが原因で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 DistrictませUnionん。HighSchool

  3. 読み取り数を変更するためにテーブルを再編成します。(出来るかは不明)

ありがとう

4

0 に答える 0