使用此表:
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)';
型
(不涉及要点的综合指数不是问题。)
2条答案
按热度按时间amrnrhlw1#
你的答案中的索引看起来不错。为了避免扫描不必要的索引条目,你应该把你与
=
比较的列放在第一位。在你的例子中,那就是bits
。zz2j4svz2#
我发现我需要使用
CREATE EXTENSION btree_gist;
,然后允许我用途:字符串
我不确定这是否是最好的解决方案。