gpt4 book ai didi

sql - 如何改进 "MAX"为 "GROUP BY"超过 PostgreSQL 上的地理数据?

转载 作者:行者123 更新时间:2023-11-29 11:22:17 24 4
gpt4 key购买 nike

我有包含 3 列的公司地址表:company_idlatlon

我需要知道每家公司的最近距离。我为 PostgreSQL 使用 cubeearthdistance 扩展。

查询工作正常但速度较慢:

SELECT
company_id,
MIN(earth_distance(ll_to_earth(lat,lon), ll_to_earth(53.96,83.96))) AS distance
FROM companies
GROUP BY company_id;

GIST 索引如下:

CREATE INDEX i_name on companies USING gist(ll_to_earth(lat, lon));

没有使用。

我该如何解决这个问题?谢谢。

最佳答案

一般来说,索引可以帮助您从大型表中找到几行,或者提高使用 ORDER BY 进行查询的速度。您的查询需要扫描表中的所有行,并对所有行进行复杂的计算。因此,索引无法帮助您,因为 Postgres 不使用索引作为预先计算的值。

您应该将 ll_to_earth(lat, lon) 的值预先计算到一个单独的列中,并在您的查询中使用该列。

关于sql - 如何改进 "MAX"为 "GROUP BY"超过 PostgreSQL 上的地理数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48146004/

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