sqlserverでのフルテキストインデックス+条件を付けると遅くなる
AUTO_ID(キー列) │ TITLE │ PREF │ STORE │
1 │あああ │ 大阪府 │ お店 │
2 │いいい │ 東京都 │ 個人 │
・・・下へおよそ1億レコード・・・
のようなテーブルがあり、TITLE列でフルテキストINDEXを行っています。
検索条件を降順限定としているため、当サイトでご教授いただいた内容で、
キーワード検索のみの場合は下記内容で問題なく実行できております。
select * from [TABLE_NAME]
where AUTO_ID in (
select AUTO_ID from [TABLE_NAME] where CONTAINS(TITLE,'"[KEYWORD]"')
)
ORDER BY AUTO_ID DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
TITLE部分のキーワード検索は問題ない速度で検索できるのですが、
都道府県指定などを指定すると劇的に重くなっており困っております。
SELECT * FROM [TABLE_NAME] WHERE AUTO_ID IN (
SELECT AUTO_ID FROM [TABLE_NAME] where CONTAINS(TITLE,'"中古"')
) AND PREF='大阪府' AND STORE='お店'
ORDER BY AUTO_ID DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
SELECT * FROM [TABLE_NAME] WHERE AUTO_ID IN (
SELECT AUTO_ID FROM [TABLE_NAME] where CONTAINS(TITLE,'"中古"')
AND PREF='大阪府' AND STORE='お店')
ORDER BY AUTO_ID DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
試しに用意してみたインデックスは
(1)非クラスター化インデックス
・AUTO_ID 降順
・PREF 降順
・STORE 降順
(2)非クラスター化インデックス
・PREF 昇順
・STORE 昇順
・AUTO_ID 降順
両者とも遅かったのですが、INDEXの張り方がまずいのか、SQLに問題があるのかわからない状況です。
TITLEでヒットする件数が少ない場合は、比較的高速に返ってきますが、多い場合は10秒以上かかっております。
回答2件
あなたの回答
tips
プレビュー