与STDistance的交叉连接花费的时间太长

时间:2020-08-07 10:00:01

标签: sql sql-server query-performance sqlgeography

在我的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

Statistics

您是否建议优化情况或唯一的“解决方案”是减少行数? 谢谢

0 个答案:

没有答案