Редко в моей среде SQL SERVER 2016 мне нужно получить расстояние между данными Geography из двух разных таблиц, как показано ниже.
CREATE TABLE #Geos1 (GeoPoint GEOGRAPHY)
INSERT INTO #Geos1
SELECT TOP 2000 Geo FROM MyTable1 ORDER BY Id DESC
CREATE TABLE #Geos2 (GeoPoint GEOGRAPHY)
INSERT INTO #Geos2
SELECT TOP 500 Geo FROM MyTable2 ORDER BY Id DESC
SET STATISTICS TIME ON
SET STATISTICS IO ON
SELECT p1.GeoPoint.STDistance(p2.GeoPoint)
FROM #Geos1 p1 CROSS JOIN #Geos2 p2
Проблема возникает, когда количество строк растет. Я знаю "проблемы с производительностью" перекрестного соединения, но я вижу, что я удаляю STDistance и "просто" выбираю данные, время отклика значительно уменьшается (9 сек c против 50 сек c по моим причинам "приемлемо" ).
Вот план запроса и статистика: План запроса
Статистика
Есть ли какие-нибудь советы по оптимизации ситуации или единственное «решение» - уменьшить количество строк? Спасибо