हाँ, आप किसी सरणी को अनुक्रमित कर सकते हैं, लेकिन आपको सरणी संचालकों और 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 विकल्प की आवश्यकता है
GIN (create index <index_name> on <table_name> using GIN (<column> gin__int_ops)
मैंने अभी तक ऐसा कोई मामला नहीं देखा है जहां यह &&और @> ऑपरेटर के साथ gin__int_ops विकल्पों के बिना काम करेगा