在我的SQL SERVER 2016环境中,很少需要从两个不同的表中获取地理位置数据之间的距离,如下所示:
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秒vs 50秒)。
以下是查询计划和统计信息: Query Plan
您是否建议优化情况或唯一的“解决方案”是减少行数? 谢谢