【发布时间】:2021-01-29 23:21:43
【问题描述】:
我有一个带有“位置”列的表,它是一个 PostgreSQL“点”类型。
我想搜索许多精确的点,例如:
SELECT *
FROM my_table
WHERE location IN ('1,1', '2,2')
这个不行,会报错
运算符不存在:点=点
要查找确切的点,必须使用~=,但这种方式只能查询一个点。
我可以通过使用OR 来解决它,例如:
SELECT *
FROM my_table
WHERE (location ~= '0,1' OR location ~= '1,2')
然而,这看起来不是最佳方式,因为它停止使用索引(gist)超过 5 个“或”,而是进行顺序扫描。
有没有一种方法可以通过查找精确的点数来进行简单且最佳的查询来获取记录?
【问题讨论】:
标签: sql postgresql