5

私は空間インデックスを使用し、WHEREステートメントを実行しようとすると:

WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0

正常に動作しますが、OR で実行しようとすると:

WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1

次のエラーが表示されます。

クエリ プロセッサは、空間インデックス ヒントを含むクエリのクエリ プランを生成できませんでした。理由: 条件に必要なバイナリ空間メソッドが見つかりませんでした。インデックス ヒントを削除するか、SET FORCEPLAN を削除してみてください。

このステートメントの問題は何ですか?

4

1 に答える 1

1

OR クエリの問題 (通常はパフォーマンス) の一般的な解決策は、それらを分離し、その間に UNION ALL を使用することです。これは通常、サブクエリまたは共通テーブル式で行われます。

より多くのクエリ、できれば関連するテーブル スキーマを投稿できれば、より詳細な回答で回答を更新できます。

于 2012-11-21T10:09:32.613 に答える