从本地数据库反转GeoCode

时间:2015-03-25 08:49:35

标签: c# sql .net sql-server sql-server-2008-r2

我们正在使用SQL Server 2008网络版。我们有一个名为“tbl_geodata”的表,它有地址和纬度和经度值。我们还有一个“历史”表,其中只包含纬度和经度值,包括其他信息。我们需要的是跟随......

我们根据“历史记录”(lat long values)中的查询得到一组记录,比如5000条记录

现在我们使用以下公式为每行(5000行)的“tbl_geodata”计算地址。

SELECT top 1 geo_street,geo_town,geo_country,( 3959 acos( cos( radians(History.lat) ) cos( radians( gps_latitude ) ) cos( radians( gps_longitude ) - radians(History.long) ) + sin( radians(History.lat) ) sin( radians( gps_latitude ) ) ) ) AS distance FROM tbl_geodata ORDER BY distance

目前我们看到了高CPU利用率和性能问题。任何人都可以建议改进步骤吗?

1 个答案:

答案 0 :(得分:0)

您需要空间索引。请参阅CREATE SPATIAL INDEXSpatial Indexes overview。 SQL Server 2008中引入了空间索引,Web Edition应该允许它们。