我有两个简单的查询,它们单独运行时会在预期时间内执行。第一个查询:
SELECT OBJECTID AS OID FROM PST_35053_SNAPPED;
花费不到一秒的时间并返回大约 3000 行。第二个查询:
SELECT DISTINCT PST.OBJECTID as OID FROM PST_35053_SNAPPED
PST INNER JOIN POWNERS_35053 POW
ON geometry::STGeomFromText('POINT(' + convert(varchar(16),POW.x) + ' ' +
convert(varchar(17),POW.y) + ')', 2100).STWithin(PST.Shape)=1;
需要一秒钟才能返回大约 2500 行。
当将它们与不包含点的情况下EXCEPT
检索polygon IDs
时(大约 500 行),生成的查询需要两分钟以上的时间来执行(大约 122 秒):
SELECT OBJECTID AS OID FROM PST_35053_SNAPPED
EXCEPT
SELECT DISTINCT PST.OBJECTID as OID FROM PST_35053_SNAPPED
PST INNER JOIN POWNERS_35053 POW
ON geometry::STGeomFromText('POINT(' + convert(varchar(16),POW.x) + ' ' +
convert(varchar(17),POW.y) + ')', 2100).STWithin(PST.Shape)=1
我有什么遗漏或做错了吗?我正在使用SQL Server 2012 SP3