我有一个基本的SQL查询,看起来像:
SELECT TOP 1
[geom].STBuffer(500)
FROM [db].[dbo].[boundaries]
哪个必要条件从数据库获取地图边界并将其缓冲500米。我遇到的问题是它非常慢,然后服务器内存不足!我确信有些东西一定是错的,因为在GIS程序中这样的简单操作需要几秒钟才能运行,而这种操作在放弃之前大约需要一分钟。
边界相当复杂,但它不应该太复杂,导致服务器耗尽内存,我很确定。
如果我将缓冲距离减少到100米,它会在大约14秒内运行并完成,这仍然太慢而无法实时使用。
知道为什么会这么慢,以及有关如何加快速度的提示吗?
谢谢,
答案 0 :(得分:2)
这是Sql Server 2008中STBuffer的一个已知限制 - 当distance参数大于对象的直径且对象超过1000个点时,它很容易变慢并且可能会耗尽内存。此问题有一个connect项,并在Sql Server Denali中修复。
作为一种解决方法,您可以尝试在调用缓冲区之前对对象运行Reduce以降低其复杂性,并使用BufferWithTolerance方法传递更高的容差,这将导致更简单的结果。