我试图通过在它们周围有一个小缓冲区的点来分割折线。目前我有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;
无论如何我可以加快查询速度吗? (我也有一个集群主键) 执行计划显示过滤器占用了36%的成本,而插入占用了64%
任何帮助将不胜感激!
(我正在使用SQL Server 2008(SQL server Management studio 10.50.1600.1))