PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bisakah PostgreSQL mengindeks kolom array?

Ya, Anda dapat mengindeks larik, tetapi Anda harus menggunakan operator larik dan tipe indeks GIN.

Contoh:

    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];

Hasil:

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
Catatan

tampaknya dalam banyak kasus gin__int_ops opsi diperlukan

create index <index_name> on <table_name> using GIN (<column> gin__int_ops)

Saya belum melihat kasus di mana ia akan bekerja dengan operator &&dan @> tanpa opsi gin__int_ops



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Nama Hari Singkat di PostgreSQL

  2. Memperbarui baris database tanpa mengunci tabel di PostgreSQL 9.2

  3. Docker menunggu postgresql dijalankan

  4. DatabaseError:transaksi saat ini dibatalkan, perintah diabaikan hingga akhir blok transaksi?

  5. Postgres homebrew rusak