ST_Distance_Sphere对于距离小于0.5英里的距离很慢。有没有办法优化更精细的距离?

时间:2018-04-12 16:18:54

标签: mysql mysqli

SELECT property.paon, 
       property.saon, 
       property.street, 
       property.propertytype, 
       property.postcode, 
       property.lastsaleprice, 
       Date(property.lasttransferdate), 
       St_distance_sphere(Point(-1.3429, 54.5924), coords) * 0.000621371192 AS 
       distance 
FROM   property property 
       INNER JOIN epc 
               ON property.postcode = epc.postcode 
                  AND Concat(property.paon, ', ', property.street) = 
                      epc.address1 
WHERE  property.lasttransferdate >= CURRENT_DATE() - INTERVAL 10 year 
HAVING distance < 0.5 
LIMIT  10 

该距离大约为1.2秒,距离<1。 0.5,随着距离的增加变得更快。但是,低于0.5时,速度开始上升到持续时间太长,无法获得可接受的用户体验。

  • 距离< 0.4 - 3.4秒
  • 距离< 0.3 - 6.3秒
  • 距离< 0.2 - 10.5秒
  • 距离< 0.1 - 43.8秒

距离越小,在某些情况下精度越高,因此这些较小距离对速度的优化更为重要。

实用信息

  • where和join子句中的所有内容都已编入索引
  • coords是一个POINT并被编入索引

0 个答案:

没有答案