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

3bygqnnd  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(163)

在我的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秒对50秒是因为我的理由“可以接受的”)。
这里是查询计划和统计信息:查询计划
统计学
你有什么建议来优化这种情况,或者唯一的“解决办法”是减少行数?谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题