私は数十億行のデータを扱っており、各行には開始緯度/経度と終了緯度/経度が関連付けられています。各始点/終点間の距離を計算する必要がありますが、非常に時間がかかります。私は本当に自分がしていることをより効率的にする必要があります。
現在、関数(以下)を使用して、ポイント間の斜辺を計算しています。これをより効率的にする方法はありますか?緯度/経度を空間地理としてキャストし、STDistance() 関数 (インデックスなし) に組み込まれた SQL を使用することは既に試みましたが、これはさらに遅くなりました。
どんな助けでも大歓迎です。精度が少し低下するとしても、機能を高速化する方法があることを願っています(最も近い100mはおそらく問題ありません)。前もって感謝します!
DECLARE @l_distance_m float
, @l_long_start FLOAT
, @l_long_end FLOAT
, @l_lat_start FLOAT
, @l_lat_end FLOAT
, @l_x_diff FLOAT
, @l_y_diff FLOAT
SET @l_lat_start = @lat_start
SET @l_long_start = @long_start
SET @l_lat_end = @lat_end
SET @l_long_end = @long_end
-- NOTE 2 x PI() x (radius of earth) / 360 = 111
SET @l_y_diff = 111 * (@l_lat_end - @l_lat_start)
SET @l_x_diff = 111 * (@l_long_end - @l_long_start) * COS(RADIANS((@l_lat_end + @l_lat_start) / 2))
SET @l_distance_m = 1000 * SQRT(@l_x_diff * @l_x_diff + @l_y_diff * @l_y_diff)
RETURN @l_distance_m