[解決済み] PostgreSQLは配列のカラムにインデックスを付けることができますか?
2022-04-15 18:58:07
質問
この質問に対する明確な答えがドキュメントに見当たらないのですが。カラムが配列型の場合、入力された値はすべて個別にインデックス化されるのでしょうか?
簡単なテーブルを作成し、1つの
int[]
列を作成し、それにユニークなインデックスを付けました。同じintsの配列を追加できないことに気づきました。これは、インデックスが各項目のインデックスではなく、配列項目の合成であることを示唆しています。
INSERT INTO "Test"."Test" VALUES ('{10, 15, 20}');
INSERT INTO "Test"."Test" VALUES ('{10, 20, 30}');
SELECT * FROM "Test"."Test" WHERE 20 = ANY ("Column1");
インデックスはこのクエリに役立っていますか?
解決方法は?
はい、配列のインデックスを作成することはできますが、そのためには 配列演算子 と GINインデックス型 .
例
CREATE TABLE "Test"("Column1" int[]);
INSERT INTO "Test" VALUES ('{10, 15, 20}');
INSERT INTO "Test" VALUES ('{10, 20, 30}');
CREATE INDEX idx_test on "Test" USING GIN ("Column1");
-- To enforce index usage because we have only 2 records for this test...
SET enable_seqscan TO off;
EXPLAIN ANALYZE
SELECT * FROM "Test" WHERE "Column1" @> ARRAY[20];
結果
Bitmap Heap Scan on "Test" (cost=4.26..8.27 rows=1 width=32) (actual time=0.014..0.015 rows=2 loops=1)
Recheck Cond: ("Column1" @> '{20}'::integer[])
-> Bitmap Index Scan on idx_test (cost=0.00..4.26 rows=1 width=0) (actual time=0.009..0.009 rows=2 loops=1)
Index Cond: ("Column1" @> '{20}'::integer[])
Total runtime: 0.062 ms
備考
というのは、多くの場合 gin__int_ops オプションが必要です。
create index <index_name> on <table_name> using GIN (<column> gin__int_ops)
gin__int_opsオプションなしで&&と@>演算子で動作するケースはまだ見たことがないのですが
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] PostgreSQLは配列のカラムにインデックスを付けることができますか?
-
[解決済み] bashで$@から最初の要素を削除する [重複] [重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ArrayIndexOutOfBoundsExceptionが発生しました。7Exception: at Test.m)
-
[解決済み】Postgresの配列に値が存在するかどうかを確認する
-
[解決済み】数値の配列が与えられたとき、他のすべての数値の積の配列を返す(除算なし)
-
[解決済み] 配列からランダムに要素を選ぶ
-
[解決済み] Swiftの辞書です。値を配列として取得する
-
[解決済み] 配列中の3つの要素のうち、和が与えられた数値に最も近いものを探す
-
[解決済み] scalaのArrayとListの違いについて
-
[解決済み] インデックスレンジSwiftからの新配列
-
[解決済み] Luaの配列(テーブル)はなぜ0ではなく1から始まるのですか?
-
[解決済み] groovyの配列/ハッシュ/コレクション/リストに要素があるかどうかをチェックするには?