我们有一个餐厅餐桌,每行有一个长期数据.
我们需要编写一个执行搜索的查询来查找所提供半径内的所有餐馆,例如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 );
Run Code Online (Sandbox Code Playgroud)
该表有大约23,000行.结果集的大小有时很奇怪,例如,对于5.4英里的搜索,它返回880行,对于5.5英里,它返回21k行.
此表包含nyc的餐馆数据 - 因此实际分布不是根据结果集.
问题:是否有任何错误使用此查询?
DB:MySQL,经度:DECIMAL(10,6),纬度:DECIMAL(10,6)