Postgres ltree 不使用 Gist index 为什么?


CREATE TABLE hierarchy_table(id integer PRIMARY KEY,path ltree);
INSERT INTO hierarchy_table
VALUES (1, '1'),
(2,'1.2'),
(3,'1.2.3'),
(4,'1.2.4'),
(5,'1.5'),
(6,'1.5.6'),
(7,'1.5.7'),
(8,'1.5.8');   
CREATE INDEX idx_hierarchy_table_gist ON hierarchy_table USING gist(path);

explain analyze select * from hierarchy_table where '1.2' @> path

结果:

hierarch_table上的顺序扫描(成本=0.00..1.10行=1宽=36((实际时间=0.009.0.011行=3个循环=1(

http://sqlfiddle.com/#!17/6e363/2

一个有8行的表对索引和测试毫无意义。

我观察到,如果我在插入之前创建了gist索引,它可以与索引一起使用。

但是,重建指数是危险的:(

最新更新