我有一个具有这样的结构的表:
table name: shop id_shop int(10) name varchar(200) latitude double longitude double
我想计算给定坐标与数据库中保存的坐标之间的距离。
我当前的查询:
SELECT * FROM `shop` AS `s` WHERE ( ( 6371 * ACOS( SIN( RADIANS( latitude ) ) * SIN( RADIANS( 53.5353010379 ) ) + COS( RADIANS( latitude ) ) * COS( RADIANS( 53.5353010379 ) ) * COS( RADIANS( 14.7984442616 ) - RADIANS( longitude ) ) ) ) <= 25 )
再加上一些JOIN LEFT的数据。
JOIN LEFT
有什么方法可以优化该查询?进行连接大约需要13毫秒。
我还需要在此处添加一些LIMIT以及COUNT(*)用于分页的商店总数。
LIMIT
COUNT(*)
这里有一些想法,根据您的实际情况,其中一些想法可能不适用。