SELECT col1, max(date1) as max_date
FROM table
WHERE col1 ILIKE 'name'
GROUP BY col1
TYPES:
ここでcol1はvarchar
で、date1はtimestamp with time zone
データ・タイプ。そのため、作成された拡張子CREATE EXTENSION pg_trgm
次に、次のインデックスを試し、エラーが発生しました:
1:問題:エラー:演算子クラス "gin_trgm_ops"はタイムゾーンのあるデータ型タイムスタンプを受け入れません
CREATE INDEX CONCURRENTLY trgm_table_col1_date_index
ON table
USING gin (provider_id, date1 gin_trgm_ops);
2:問題:エラー:アクセスメソッド "gin"の演算子クラス "text_pattern_ops"が存在しません
CREATE INDEX CONCURRENTLY trgm_table_col1_date_index
ON table
USING gin (provider_id, date1 text_pattern_ops);
上記のクエリのインデックスを作成して実行を高速化するにはどうすればよいですか?どんな助けでも本当に感謝します!
予約語ではないクエリ例の識別子を選択してください。
_pg_trgm
_モジュールは、テキストのような列のみをサポートします。 date
列はおそらくテキストタイプではなく、日付タイプ(またはタイムスタンプなど)です。
やりたいことを行うには、最初に日付のようなデータをginインデックスでインデックス付けできるようにする必要があります。たとえば、_create extension btree_gin
_です。
次に、インデックスを作成できます。
_create index on bar using gin (col1 gin_trgm_ops, date_column);
_
_btree_gin
_はデフォルトのクラスを提供するため、date_columnの演算子クラスを提供する必要はありません。指定する演算子クラスは、それが適用される列の横にある必要があります。それらはインデックスごとではなく、列ごとです。
これはあなたの質問に答えますが、おそらくあなたの問題を解決しないことに注意してください。上記のインデックスは合法で構築できますが、クエリを高速化することはできません(col1のpg_trgm indxが行うことを超えて)。クエリをより高速に実行するためのヘルプが必要な場合は、既存のクエリのEXPLAIN (ANALYZE)
および その他の情報 を表示する必要があります。