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

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • Moto Journal

    Moto Journal

    28 Mayıs 2007
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011