最近、私はこのクエリを最適化しようとしていました
UPDATE Analytics
SET UserID = x.UserID
FROM Analytics z
INNER JOIN UserDetail x ON x.UserGUID = z.UserGUID
推定実行プランは、テーブル更新で57%、ハッシュ一致(集計)で40%を示しています。私はいくつかの詮索をして、JOINヒントのトピックに出くわしました。そこで、内部結合とWA-ZHAMにLOOPヒントを追加しました。新しい実行プランでは、テーブルの更新で38%、インデックスシークで58%が表示されます。
ですから、慎重さが良くなるまで、すべてのクエリにLOOPヒントを適用し始めようとしていました。少しグーグルした後、JOINのヒントがBOLで十分にカバーされていないことに気付きました。したがって...
- 誰かが私のすべてのクエリにLOOPヒントを適用することが悪い考えである理由を教えてもらえますか?LOOP JOINがクエリオプティマイザーのデフォルトのJOINメソッドであるとどこかで読みましたが、ステートメントの有効性を検証できませんでしたか?
- JOINヒントはいつ使用されますか?sh * tがファンにぶつかり、ゴーストバスターが町にいないときは?
- LOOP、HASH、MERGEのヒントの違いは何ですか?BOLは、MERGEが最も遅いように見えると述べていますが、各ヒントの適用は何ですか?
あなたの時間をありがとう、そして人々を助けてください!
私はSQLServer2008BTWを実行しています。上記の統計は、推定実行計画です。