1

の表は、製品です。現時点では私は〜5kの行を持っていると私はこのようにそれを照会しています:チューニングPostgresの全文検索

select id, to_tsvector(attributes::text) @@ to_tsquery('22222') from product; 

は、このクエリが既に完了するために数秒かかりますし、私はその時間を改善するために何かできることがあるかどうかを知りたいです、インデックスや改善されたクエリ?望ましくない

    id     | found 
--------------------------------------+------- 
a8230602-ff3f-4414-affc-3594abcfa617 | f 
da0c70d5-5108-42ea-941d-123589129feb | f 
24ac417a-466c-465c-b346-4fad7a9ad3d8 | f 
4bee6122-c5d7-4e0c-840e-e04c28888a9a | f 
ce5fe539-bcb2-4cec-9012-b2501df7012e | f 

、試合を持っている行のみを返す方法があります:このクエリが返すを開始するため

答えて

3

あなたはWHERE句に条件を移動する必要があります。

SELECT * 
FROM product 
WHERE to_tsvector('english', attributes::text) @@ to_tsquery('22222'); 

そして、表現上のフルテキストインデックス作成:クエリでのインデックス式と式が一致している必要があり

CREATE INDEX textsearch_idx ON product 
USING GIN (to_tsvector('english', attributes::text)); 

を。

Details in the manual.

それともあなたは jsonb GINインデックスを使用することができる場合があります

をしかし、それは、あなたがしたい場合は動作しないだろう検索キー値を一度に表示します。

標準化された表のレイアウトで始める方がよい場合があります。