我有一个查询,用于查找距离已知点 1 公里以内的位置。
为此,我使用了余弦球面定律公式和我的纬度和经度。
目前,该查询在大约 5 分钟内运行了大约 5000 条记录。这是可以接受的,但我想尽快完成。
我使用的主要查询:
select loc.*, base.key
from locations loc left outer join baseline base
on base.key in
(select key
from baseline
where [dbo].CIRCLEDISTANCE(loc.LAT, base.LATITUDE, loc.LONG, base.LONGITUDE) <= 1)
Run Code Online (Sandbox Code Playgroud)
圆距离标量值函数:
ALTER FUNCTION CIRCLEDISTANCE
(
-- Add the parameters for the function here
@LAT1 varchar(250),
@LAT2 varchar(250),
@LNG1 varchar(250),
@LNG2 varchar(250)
)
RETURNS float
AS
BEGIN
DECLARE @Distance float
DECLARE @LAT1_FLOAT float
DECLARE @LNG1_FLOAT float
DECLARE @LAT2_FLOAT float
DECLARE @LNG2_FLOAT float
select @LAT1_FLOAT …Run Code Online (Sandbox Code Playgroud)