我有一个用例,我需要检索有一个位置听到地理空间点的有限数量的记录。类似于:
SELECT * FROM table WHERE location is near (x, y) LIMIT 200
我想使用PostGIS。但我不知道它是否支持这种查询。因为我不想检索边界框内的记录,而是根据它们到指定点的距离排序的极限记录数。我没有在PostGIS的文档中找到有关它的信息。
如果PostGIS支持它,它会扩展吗?这是我的应用中最常用的查询。并且记录的数量非常大。
我知道MongoDB有$ near查询。它会扩展吗?
答案 0 :(得分:1)
我无法与postgis交谈,但MongoDB的$near运算符旨在很好地扩展,并使用适当的地理空间索引,并对查询进行彻底的正确性和速度测试。此外,使用limit游标选项可以非常轻松地指定您想要的结果数量,从而减轻服务器和网络上的负载。
答案 1 :(得分:0)
PostGIS 2引入了KNN GiST索引距离运算符(例如<->
centroid operator),这在a blog post from 2011中得到了很好的描述。这个距离操作符是为速度而设计的。
SELECT * FROM table WHERE location <-> ST_MakePoint(x, y) LIMIT 200;
还有许多其他距离滤波器和操作员可用。