【发布时间】:2011-02-28 23:06:34
【问题描述】:
我不是数据库专家,但我有足够的知识让自己陷入困境,就像这里的情况一样。这个查询
SELECT DISTINCT p.*
FROM points p, areas a, contacts c
WHERE ( p.latitude > 43.6511659465
AND p.latitude < 43.6711659465
AND p.longitude > -79.4677941889
AND p.longitude < -79.4477941889)
AND p.resource_type = 'Contact'
AND c.user_id = 6
非常慢。 points 表的记录少于 2000 条,但执行大约需要 8 秒。纬度和经度列上有索引。删除关于 resource_type 和 user_id 的子句没有任何区别。
纬度和经度字段都被格式化为数字(15,10)——我需要一些计算的精度。
在这个项目中有很多很多其他的查询比较点,但没有执行时间问题。怎么回事?
【问题讨论】:
-
请发表解释。 Distinct 通常是性能问题。另外,请确保对纬度和经度进行索引。
标签: sql database postgresql indexing