我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:
我有一个表格,其中包含一个地理位置列,存储了属性的位置。
我的过程大致如下 -
PROCEDURE dbo.spt_sold_property_search
(
@latitude_min Decimal(9,6),
@latitude_max Decimal(9,6),
@longitude_max Decimal(9,6),
@longitude_min Decimal(9,6)
)
AS BEGIN
SET NOCOUNT ON
SELECT * FROM [dbo].[sold_property] AS p WITH(NOLOCK)
WHERE p.location ***is in the lat/long min max bounds***
END
在where子句中需要什么来检查地理点是否在纬度/经度的最小值和最大值范围内?由于数据集很大,性能至关重要。
我应该在代码中从边界创建一个Geography SQL类型,并将其作为过程传递给存储过程吗?
我也考虑创建2个计算出的int列(纬度/经度),这些列将在插入时创建,然后使用简单的< >,因为我听说这比Geography查询更快。
location
列中的数据长什么样? - Vamsi Prabhala地理信息
没有经验,但是快速查看网上的资料表明,您需要将坐标转换为多边形地理信息
,然后使用.STWithin
进行测试。请参见https://msdn.microsoft.com/en-us/library/ff929207.aspx和http://www.sql-server-helper.com/sql-server-2008/convert-latitude-longitude-to-geography-point.aspx。 - Turophile