2つのフルテキストインデックステーブルに依存する単純なクエリがありますが、CONTAINSを追加のOR検索と組み合わせると、実行速度が非常に遅くなります。実行プランに見られるように、2つの全文検索はパフォーマンスを押しつぶします。CONTAINSの1つだけでクエリを実行するか、どちらも使用しない場合、クエリは1秒未満ですが、ORをミックスに追加すると、クエリの運命が悪くなります。
2つのテーブルは特別なものではなく、幅が広すぎず(一方に42列、もう一方に21列、それぞれに10列がFTインデックス付けされている可能性があります)、非常に多くのレコードが含まれています(2つのうち最大のもので36kレコード)。
2つのCONTAINS検索を独自のSELECTクエリに分割し、次に3つをUNIONすることで、パフォーマンスを解決することができました。このUNIONの回避策は私の唯一の希望ですか?
SELECT a.CollectionID
FROM collections a
INNER JOIN determinations b ON a.CollectionID = b.CollectionID
WHERE a.CollrTeam_Text LIKE '%fa%'
OR CONTAINS(a.*, '"*fa*"')
OR CONTAINS(b.*, '"*fa*"')
実行計画: