据我在本文中了解,在处理几何数据类型时,可以使用<->距离运算符查找最近邻:
SELECT name, location --location is point
FROM geonames
ORDER BY location <-> '(29.9691,-95.6972)'
LIMIT 5;
您还可以使用sp gist索引获得一些优化:
CREATE INDEX idx_spgist_geonames_location ON geonames USING spgist(location);
但是我在文档中找不到任何关于对数组使用<->运算符的内容。如果我使用 double precision[]
而不是 point
举个例子,这样行吗?
1条答案
按热度按时间xqk2d5yq1#
显然,我们不能。例如,我有一个简单的表:
我想从中查询文档,按距离排序,
它不起作用:
文档中也没有提到数组的<->。我在这个问题的公认答案中找到了一个解决方法,但它有一些限制,特别是在数组长度上。尽管有一篇文章(用俄语写)建议在数组大小限制方面采取一种变通方法。创建示例表:
元素插入:
元素查询: