У меня есть запрос, который вычисляет расстояние, он работает, как и ожидалось, однако может потребоваться много времени для запроса с большим количеством точек данных.
Я попытался добавить хэш-распределение distribution =, и это оказало некоторое влияниено не значительные суммы.
CREATE TABLE #POI_PINGS_ALL
WITH
(
DISTRIBUTION=HASH([UUID])
)
AS
SELECT
l.[PoiId]
, v.[UUID]
, [CreatedOn]
, v.[Lat]
, v.[Lon]
FROM #LOCATION_PINGS_COUNCIL_DISTRIBUTED v
INNER JOIN #POI_LOOKUP l
ON l.[CouncilId] = v.[CouncilId]
INNER JOIN #POI p
ON p.[PoiId] = l.[PoiId]
WHERE
dbo.fn_GetDist(v.[Lat], v.[Lon], p.[Lat], p.[Lon]) <= p.[Radius]
Есть ли более эффективный способ написания этого запроса?