PostgreSQL的VARCHAR ARRAY应该使用哪种索引类型?

时间:2018-11-30 08:13:29

标签: arrays postgresql indexing varchar

我有一张表,其中包含类型为VARCHAR的一维数组。

CREATE TABLE IF NOT EXISTS table_name (
    attribute VARCHAR(64) ARRAY DEFAULT NULL
);

我希望对此类型建立索引,因此我尝试创建一个GIN类型索引,如下所示:

CREATE INDEX table_ix ON table_name USING GIN (attribute);

不幸的是,似乎PostgreSQL的执行计划没有选择该索引。运行EXPLAIN ANALYZE [...]会产生以下结果:

Seq Scan on table_name  (cost=0.00..2.15 rows=11 width=717) (actual time=0.010..0.019 rows=11 loops=1)
  Filter: (attribute @> '{VALUE}'::character varying[])
  Rows Removed by Filter: 1
Planning time: 0.201 ms
Execution time: 0.033 ms

我什至尝试使用SET ENABLE_SEQSCAN TO OFF;禁用顺序扫描,但结果仍然相同,仍然不使用索引。

如您所见,表本身当前只包含很少的行,实际上只有11行,由于行数少,PostgreSQL是否有可能决定完全忽略索引,但是当记录数很大时,实际上会使用索引成长?还是我可能没有正确设置索引?

0 个答案:

没有答案