SQL空间STIntersection空间索引

时间:2015-02-05 09:20:17

标签: sql sql-server performance indexing spatial

我试图通过在它们周围有一个小缓冲区的点来分割折线。目前我有370,000多个线路和320,000个节点,查询运行速度非常慢(我已经离开了3天,但仍然没有完成)。我尝试用(索引(SI_tempPD))强制使用空间索引,但是我得到以下错误:

"查询处理器无法为具有空间索引提示的查询生成查询计划。原因:无法在条件中找到所需的二进制空间方法。尝试删除索引提示或删除SET FORCEPLAN。"

下面的

是我收到错误时尝试运行的代码片段:



BEGIN
		INSERT INTO TempLines (
				 [linenum]
				,[ogr_geometry]
				)
		SELECT lines.[linenum]
			  ,lines.[ogr_geometry].STDifference(points.[ogr_geometry].STBuffer(0.005)) AS ogr_geometry 
		FROM dbo.TemplineData AS lines with(Index(SI_tempPD)) INNER JOIN dbo.[TemplineNodes] AS points
		ON lines.[ogr_geometry].STIntersection(points.[ogr_geometry]).STDistance(points.[ogr_geometry]) < 1
		WHERE (lines.[linenum] <> points.[linenum])
	END
&#13;
&#13;
&#13;

无论如何我可以加快查询速度吗? (我也有一个集群主键) 执行计划显示过滤器占用了36%的成本,而插入占用了64%

任何帮助将不胜感激!

(我正在使用SQL Server 2008(SQL server Management studio 10.50.1600.1))

0 个答案:

没有答案