クエリでこのSQL空間インデックスヒントをどこで/どのように指定するかわかりません:-
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
クエリを実行すると、空間ヒントが使用されていません。はい、最新バージョンのSQL Server 2008 r2(v 10.5.1600.1)を使用しています。
そこで、ヒントを強制してクエリ速度を比較するために、私は試してみました...
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b WITH (INDEX(MySpatialIndex)) ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
それはうまくいきましたが、パフォーマンスは本当に悪かったです。ヒントを使用して結合を実行しようとしていたのではないかと思っていましたa.Id = b.Id
(ヒントを使用したくないためです)。
助言がありますか?
アップデート:
クエリプランを追加しました。コストの大部分は、2つのテーブル間の結合です。Filter(where句)は2番目にコストのかかる部分を占めます。