gpt4 book ai didi

sql-server - MS SQL - 使用几何数据类型查找距离是否明显更快?

转载 作者:行者123 更新时间:2023-12-02 00:37:33 26 4
gpt4 key购买 nike

我有一个包含大量地理空间数据的数据库……基本上是关于成千上万人的信息,以及每个人的坐标。

坐标目前存储为纬度和经度的两个 float ,我使用一个函数来确定该记录中的坐标与我传入的坐标之间的距离......基本上是为了排序和限制我得到的结果距离。这就是函数中使用的大致代码。

DECLARE @earthSphereRadiusKilometers as float
DECLARE @kilometerConversionToMilesFactor as float
SELECT @earthSphereRadiusKilometers = 6366.707019
SELECT @kilometerConversionToMilesFactor = .621371

-- convert degrees to radians
DECLARE @lat1Radians float
DECLARE @lon1Radians float
DECLARE @lat2Radians float
DECLARE @lon2Radians float
SELECT @lat1Radians = (@lat1Degrees / 180) * PI()
SELECT @lon1Radians = (@lon1Degrees / 180) * PI()
SELECT @lat2Radians = (@lat2Degrees / 180) * PI()
SELECT @lon2Radians = (@lon2Degrees / 180) * PI()

-- formula for distance from [lat1,lon1] to [lat2,lon2]
RETURN ROUND(2 * ASIN(SQRT(POWER(SIN((@lat1Radians - @lat2Radians) / 2) ,2) + COS(@lat1Radians) * COS(@lat2Radians) * POWER(SIN((@lon1Radians - @lon2Radians) / 2), 2))) * (@earthSphereRadiusKilometers * @kilometerConversionToMilesFactor), 4)

存储过程需要 4 或 5 秒才能运行。

我注意到 SQL Azure 现在支持几何数据类型..(当我创建数据库时它不支持)。

所以我的问题是......我的存储过程运行速度是否会显着提高,这将使我值得花时间将其更改为使用几何数据类型?

谢谢!

史蒂文

最佳答案

您的问题“我是否会体验到显着的增加速度……[通过]改变使用几何数据类型?”似乎忽略了使用专用空间数据类型实际上会减慢速度的可能性。然而,出于多种原因,实际上可能就是这种情况。

首先,请记住几何和地理数据类型不仅支持点,还支持线串和多边形。它们支持的额外复杂性意味着它们不一定使用简单的点对点距离计算。它们还支持这些类型的更多内置函数,因此点的序列化值比一组经纬度坐标更复杂。这意味着几何/地理点值的检索和查询速度可能比原始浮点坐标数据的等效列慢。

第二个也是更重要的因素与执行距离计算的准确性有关:

1.) 如果您有投影坐标(即 UTM、国家网格或国家平面),则坐标值在平面上以线性 (x, y) 单位测量。因此,使用基本三角函数很容易计算出两点之间的距离:距离(xy) = SQRT( (x2 - x1)2 + (y2 - y1)2 )这是一个简单的数学方法,无论您自己实现还是使用几何数据类型,您都不太可能看到性能差异。

2.) 如果您有地理坐标(即纬度/经度),则这些是在椭球 上以角度单位测量的。最常见的是 WGS84 系统使用的 WGS84 椭球体。在许多情况下,您可以通过使用简单的球面 计算来获得椭圆体上两点之间距离的足够好的近似值,就像您在存储过程中所做的那样。然而,地球的形状更像是一个被压扁的球体——它在赤道处的宽度比在两极处的高度要宽,而且你的计算不允许地球变平。地理数据类型使用椭圆体计算,基于提供的 SRID 的椭圆体模型,这必然更复杂,但会产生更准确的答案。

所以我建议,如果您想提高空间数据的精度功能,那么您应该转向空间数据类型,但不是出于性能原因。

关于sql-server - MS SQL - 使用几何数据类型查找距离是否明显更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com