gpt4 book ai didi

postgresql - 在 Postgres 中结合传统索引和空间索引

转载 作者:行者123 更新时间:2023-11-29 12:58:21 25 4
gpt4 key购买 nike

我有带时间戳的位置数据。

我希望 Postgres 能够高效地执行时间和空间有限的查询。例如

select * 
from tracking_tags
where ts >= '1990-01-01T00:00:00.000Z'
and ts < '2000-01-01T00:00:00.000Z'
and lat > 40.0
and lat < 50.0
and long < 0.0
and long > -10.0

我应该如何从索引的角度来处理这个问题?

我很困惑,因为我想我可能需要在 ts 上的普通 b-tree 索引和 lat/long 上的 GIST 索引之间做出选择code> POINTs,但我需要一个复合索引(或可能两个)。

假设有十年的数据,每天有一千条记录。

(P.S. 为废话 SQL 道歉,我还没有从 MySQL 切换到 Postgres - 但这是一个 Postgres 问题。)

最佳答案

根据您需要获取的信息,此特定表架构的索引可能会有很大差异。

例如,下面的查询可能会有效地使用索引

CREATE INDEX ON tracking_tags USING gist (point(lat,long), ts);

SELECT *
FROM tracking_tags
WHERE point(lat,long) <@ box(point(40,-10),point(50,0)) AND
ts <@ tstzrange'[1990-01-01,2000-01-01)' AND
lat NOT IN (40, 50) AND long NOT IN (-10, 0);

关于postgresql - 在 Postgres 中结合传统索引和空间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37125087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com