sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLは配列列にインデックスを付けることができますか?

    はい、配列にインデックスを付けることはできますが、配列演算子とGIN-indexタイプを使用する必要があります。

    例:

        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オプションなしで&&および@>演算子で機能するケースはまだ見ていません



    1. PostgreSql'PDOException'メッセージ'がドライバーを見つけられませんでした'

    2. PL/SQL-WhereIn句でリスト変数を使用

    3. IRIWorkbenchでの新しいテーブルの作成

    4. PLPDF_TOOLKIT PL / SQLパッケージを使用して、Oracleで複数のPDFファイルを1つのPDFにマージ/結合