簡體   English   中英

PostgresQL — GIN索引和B樹的交集?

[英]PostgresQL — GIN index and intersection with B-trees?

我有兩個索引:

CREATE INDEX table_a_b ON table (a, b);
CREATE INDEX table_c_gin ON table USING GIN(c);

我的查詢如下所示:

SELECT * FROM table WHERE a = 'test' and b = 1 and c @> '{"test1", "test2"}'::text[];

查詢計划器將輸出以下內容:

 Index Scan using table_a_b on table  (cost=0.13..8.15 rows=1 width=52)
 Index Cond: (((a)::text = 'test'::text) AND (b = 1))
 Filter: (c @> '{test1, test2}'::text[])

那么,有什么辦法可以使GIN索引正常工作嗎? 也許有一種方法可以創建具有兩種不同索引類型的復合索引?

感謝任何幫助。

如果計划者認為值得這樣做,則可以對table_a_b使用位圖索引掃描並匯總兩個結果。 您必須查看EXPLAIN的輸出,以了解為什么它不選擇這樣做。

如果要創建組合索引,則必須安裝btree_gin擴展。 然后,您可以在GIN索引中使用textinteger列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM