【发布时间】:2011-06-23 04:31:03
【问题描述】:
我的表结构如下:
列名:单元格经度纬度bcch bsic 数据类型:varchar double double double double 键:x我想知道所有的单元格是什么
- 彼此相距 10 公里,并且
- 具有相同的 bcch+bsic。
满足上述要求的空间 sql 查询是什么?
由于我对 postgis 的了解有限,请随意以“改用此数据库表结构”开始您的回答,以便它更面向 GIS(我相信存在点的概念,而不是纬度/经度列)。我以前没有写过空间查询,正在考虑购买“PostGIS In Action”一书,但需要知道我想要做的事情是否可行以及如何做。
另外我想提一下,我知道如何在标准 sql 中做到这一点。我需要一个空间查询,因为大约有 10000 条记录,并且使用标准的 sql 方法,我需要生成 10000*10000(每个单元格的所有其他单元格)记录,然后查询它们,这将是非常低效的。
【问题讨论】:
-
如果您在整个表上运行此查询,我怀疑您是否会从 gist 索引中获得有意义的性能提升。在这种情况下,基本上每一行都将在连接的任一侧被考虑,因此您最终将整个表与其自身连接并实际处理 10k * 10k 行......如果 gist 索引会有所帮助你只是在考虑范围更窄的事情。
标签: sql postgresql gis postgis