如何在Postgres中创建包含POINT的复合索引?

问题描述 投票:0回答:1

有了这张桌子:

CREATE TABLE bins (
    id SERIAL PRIMARY KEY,
    start TIMESTAMP NOT NULL,
    bits BIT(16) NOT NULL,
    topleft POINT, -- (x,y) in web mercator projection
    count INTEGER
);
CREATE INDEX ON bins USING gist(topleft);

如何创建复合索引,以便我可以有效地运行查询,例如:

SELECT SUM(packets) FROM bins
WHERE (start BETWEEN '2023-10-30' AND '2023-10-31')
AND bits = B'0000000000001001'
AND topleft <@ BOX '(90500000000,135800000000)(90600000000,135900000000)';

(综合指数,不涉及要点,不是问题。)

postgresql spatial gist-index
1个回答
0
投票

我发现我需要使用

CREATE EXTENSION btree_gist;
,然后我可以使用:

CREATE INDEX ON bins USING gist(start, bits, topleft);

我不确定这是否是最好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.