SQL多边形查询需要很长时间才能与子查询一起执行

时间:2019-04-13 17:21:48

标签: mysql polygon

我从sql地理开始,我进行了查询以获取发送到多边形内的所有存储点,它获得了正确的结果,但是执行起来需要很长时间。如何使该查询的性能更好?

PS:我在5.5.62上使用mysql。

我的查询:

SELECT id, name 
FROM geolocations 
WHERE id in ( SELECT geo_id FROM users) AND
CONTAINS(GEOMFROMTEXT('POLYGON((-22.892726399999997 -47.05525290000003,-22.891496748403178 -47.05564986693423,-22.8915264 -47.05405289999999,-22.892726399999997 -47.05405289999999,-22.892726399999997 -47.05525290000003))'), coords)   
ORDER BY `id` desc LIMIT 0, 10

编辑:如果我删除id in ( SELECT geo_id FROM users),则查询会更快。

1 个答案:

答案 0 :(得分:0)

您应该在int列中添加一个索引

索引通常存储在平衡树中,因此geo_id的树搜索复杂度应为 O(log n)而不是 O(n ),这应该会带来更好的效果。