SORU
30 EKİM 2010, CUMARTESİ


Dizin dizi sütun PostgreSQL?

Belgelerinde bu soruya kesin bir cevap bulamıyorum. Eğer bir sütun bir dizi türünü ise, girilen bütün değerleri tek tek endeksli olacak?

int[] bir sütun ile basit bir tablo oluşturdum ve üzerinde benzersiz bir dizin koyun. Bana dizini dizi öğeleri, her maddenin bir dizin değil bileşik olduğunu inandırır in aynı dizi Ekle edemeyeceğimi fark ettim.

INSERT INTO "Test"."Test" VALUES ('{10, 15, 20}');
INSERT INTO "Test"."Test" VALUES ('{10, 20, 30}');

SELECT * FROM "Test"."Test" WHERE 20 = ANY ("Column1");

Bu sorgu için Yardım dizini.

CEVAP
30 EKİM 2010, CUMARTESİ


Evet bir dizi dizini, ama ben array operators GIN-index type kullanmak zorunda.

Örnek:

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

Sonuç:

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Top Gear

    Top Gear

    27 Mart 2006