jayz回答ポイント 50ptウォッチ 2

■(POSTGRESQL)複数カラムに指定の文字列が含まれているか、高速に検索したい


例として下記のようなテーブルがあるとします。

productsテーブル
id | product_name | category | price | detail

ユーザがWEBから検索ワードを指定し、そのワードが含まれるレコードを抽出したいです。
ただ、何も考えずにSQLを作成すると下記のように、非常にハイコストなSQLができてしまいます。
(AND検索を想定しています)

*検索ワードとして"おもちゃ","ハリーポッター"の2語が指定された場合

SELECT id FROM products
WHERE product_name LIKE '%おもちゃ%'
OR category LIKE '%おもちゃ%'
OR price LIKE '%おもちゃ%'
OR detail LIKE '%おもちゃ%'
AND product_name LIKE '%ハリーポッター%'
OR category LIKE '%ハリーポッター%'
OR price LIKE '%ハリーポッター%'
OR detail LIKE '%ハリーポッター%'

今回の例のようなテーブルでは各カラムに文章が入るわけではないため、
ludia等の全文検索を利用するのは筋違いなのでは?と思っています。

こういったパターンにおいてどのような処理を行うのがよいか
ご自身の経験上、ある程度自信をお持ちの方にお伺いできればと思います。

よろしくお願いします。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する
回答がありません

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2009-08-31 13:59:02
終了日時
2009-09-07 14:00:03
回答条件
1人2回まで

この質問のカテゴリ

この質問に含まれるキーワード

postgreSQL330SQL1319全文検索89ハリーポッター42レコード916

人気の質問

メニュー

PC版