我是服务车辆调度网络应用程序的开发人员。它是用 .Net 4+、MVC4 编写的,使用 SQL 服务器。
数据库中存储了 2000 多个位置作为地理数据类型。假设我们将资源从位置 A 发送到位置 B,则需要在某一点显示行驶时间/距离等。如果我用 SQL Server 的 STDistance 计算距离,它只会给我“乌鸦飞”的距离。因此,系统需要访问 bing、Google 或 ESRI 等地理空间服务,并获取实际行驶时间或建议路线。问题是这是一个核心功能,并且会发生很多。
我应该使用预先计算的距离或平均行驶时间预先填充查找表吗?不利的一面是即使没有添加更多位置,每次需要信息时都要搜索 400 万条记录。
最重要的是,大多数时候目的地不是我们存储的地理空间坐标之一,而是可以是大陆上任何地方的地址或经度/纬度点,这使得预先计算变得不可能。
我试图避免性能问题不得不不断地触及一些 geoservies 端点。
关于如何最好地解决这个问题的任何建议?
-谢谢!