有多好是在SQL Server 2008中的数据类型的地理?

我有一个大的数据库,全力为客户,在SQL Server实现每个客户2005年有一个经度和纬度,表示为Decimal(18,15) 在数据库中的最重要的搜索查询,试图寻找接近到一定位置,这样所有的客户:

(Addresses.Latitude - @SearchInLat) BETWEEN -1 * @LatitudeBound AND @LatitudeBound) AND ( (Addresses.Longitude - @SearchInLng) BETWEEN -1 * @LongitudeBound AND @LongitudeBound)

所以,这是一个非常简单的方法。 @LatitudeBound@LongitudeBound只是数字,用点的一个粗略的矩形边框中拉回来的所有客户@SearchInLat, @SearchInLng 。 一旦结果得到一个客户PC,部分结果被过滤掉,以便有一个边界圈,而不是一个矩形。 (这是在客户端PC,以避免在服务器上计算平方根上完成的。)

这种方法已经足够好了过去。 然而,我们现在想使搜索做更有趣的事情 - 例如,具有的结果数拉回更可预见的,或为用户动态地增加搜索半径的大小。 要做到这一点,我一直在寻找ugprading到SQL Server 2008,与它的地理数据类型,空间索引和距离函数的可能性。 我的问题是:如何快速是谁的?

我们此刻的简单查询的优点在于,它是非常快的,而不是表现密集,因为它是所谓经常是很重要的。 如何快速将查询围绕这样的事:

SearchInPoint.STDistance(Addresses.GeographicPoint) < @DistanceBound

通过比较呢? 执行空间索引做工精良,并且是STDistance快?

--------------解决方案-------------

如果你的操作只是一个标准的纬度/ LNG作为你描述对,和你做的是一个简单的查询,那么可以说你不打算使用几何类型获得的的速度增长的方式很多。

但是,如果你希望得到尽可能你的状态更加冒险,然后交换使用几何类型将开辟新的可能性整个世界为你,而不仅仅是搜索。

例如(根据项目我的工作),你可以(如果它的英国数据)下载所有城镇/农村/城市的多边形定义为一个特定区域,然后做交叉引用在特定的城镇进行搜索,或如果你有一个路线图,你会发现哪些客户居住旁边主要配送路线,高速公路,主要道路各种各样的事情。

你也可以做一些很花哨的报告,想象地图城镇,其中每个大纲在地图上绘制的,那么阴影与色彩向客户展示的密度在一个地区,一些简单的几何图形SQL会很容易地回报你一个计数直从数据库中,以图形这类信息。

再有就是跟踪,我不知道你有什么处理的数据,或者为什么你的客户,但如果你提供什么,养活了送货车的坐标,告诉你这是一个给定客户的距离。

至于这个问题是STDistance快? 嗯,这很难说真的,我想一个更好的问题是“它是快速相较于......”,这很难说是或不是,除非你有比较它。

空间索引的主要原因为您的数据移动到地理数据库了解他们优化生产给定任务的最好成绩之一,但像任何数据库中,如果您创建坏索引,那么你会得到不错的表现。

一般来说,你应该明确地看到某种类型的速度增加,因为在分类和索引的数学更加意识到数据的目的,而不是只是被操作相当线性像一个正常的指数。

请记住,以及,那该有多健壮的SQL服务器计算机,更好的结果,你会得到。

最后一点要提的是数据的管理,如果您使用的是GIS知道数据库,然后在打开的途径供你使用地理信息系统软件包,如ArcMap或MapInfo的管理,纠正和可视化数据,意味着修正是很容易通过指向,点击和拖动的事情。

我的建议是,以创建由边桌的一侧,你现有的,已格式化为空间操作,然后写一些存储的特效,并做一些计时测试,看看哪出来的最好的。 如果你只是在你这样做的基本操作的显著上升,那么这就是单纯的理由,如果它是关于相等,则你的决定真的取决于,你真的想达到什么样的新功能。

分类:SQL Server 2008中 时间:2015-03-15 人气:0
本文关键词: SQL Server 2008中
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.168 (s). 10 q(s)