我们有一个包含每一行经纬度信息的餐厅
数据表。
我们需要编写一个查询,以在给定半径(例如1英里、5英里等)内查找所有餐厅。
我们有以下查询
用于此目的:
***Parameters***
Longitude: -74.008680
Latitude: 40.711676
Radius: 1 mile
***Query***
SELECT *
FROM restaurant
WHERE (
POW( ( 69.1 * ( Longitude - -74.008680 ) * cos( 40.711676 / 57.3 ) ) , 2 ) + POW( ( 69.1 * ( Latitude - 40.711676 ) ) , 2 )
) < ( 1 *1 );
这个表格有大约23k行。结果集的大小有时候会很奇怪,例如对于5.4英里的搜索,它返回880行,而对于5.5英里的搜索,它返回21k行。
这个表格包含了纽约市的餐厅数据 - 所以实际分布不符合结果集。
问题:这个查询有什么问题吗?
数据库:MySQL,经度:DECIMAL(10,6),纬度:DECIMAL(10,6)