У меня есть два простых запроса, которые выполняются в течение ожидаемого времени, когда они выполняются в одиночку.Первый запрос:
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