1

不均一な属性を持つ非正規化データの大規模なセットがあり (一部の属性は存在し、一部の属性は存在しません)、それを単一の列に挿入します。この列には、約 300 のキーと値のペアが含まれており、行あたりの合計サイズは 5000 文字です。これらの属性のいくつかに対して、合計 100000 行のilikeand演算子を使用して文字列検索クエリを実行したいと考えています。OR

クエリ:

SELECT hstore->'a' AS a, hstore->'b' AS b,hstore->'c' AS c
  FROM table
  WHERE
       hstore->'x' ILIKE '123%' 
    or hstore->'y' ILIKE '123%'
    or hstore->'z' ILIKE '123%'

インデックスなしのテーブルに対するこのクエリでは、実行時間が 500 ミリ秒を超えます ( explain analyze)。

すべての属性が 1 つの列にある古い RDBMS インデックス テーブルを使用すると、パフォーマンスは大幅に向上しますが、柔軟性は低くなります。

これらの hstore 属性で異なる/複数のインデックスを試しました。

CREATE INDEX idx_table_hstore ON table( (hstore->'a') )

それぞれに 1 つのインデックスがありますが、パフォーマンスはインデックスがまったくない場合と同じです。

私が理解している限り、列はかなり大きく、幾何学的演算子を必要としないため、GIN/GIST インデックスはあまり意味がありません (私が間違っている可能性があります)。

このような状況で、従来のモデルを使用する場合と同等またはそれ以上のパフォーマンスを達成するには、どのインデックス作成方法を使用しますか?

4

1 に答える 1