我需要检查商家是否接近我的长经度值。我不需要所有附近的东西,我只需要知道至少1点是否在附近。
使用以下查询:
SELECT *
FROM
(
SELECT TOP 1
Id,ImagePath,Title,Latitude,Longitude,'Distance' = dbo.GetHaversineDistance(77.050888,28.581181,Latitude),[Address],City,PinCode,[State],Phone,DateCreated,DateLastUpdated,IsDeleted,MerchantCode
FROM MerchantLocations
ORDER BY Distance
) AS Locations
WHERE Distance <= 50
尽管排在前1位,但我知道对表中的所有记录都进行了Haversine计算,然后按距离对它们进行了排序,然后选择了前1位。
一旦至少1条记录少于50条,是否可以停止表扫描和haversine计算?有没有办法不对所有记录进行haversine计算?