Я использую Query Layer на SQL Server в ArcMap. Уровень запросов выполняется мгновенно в SQL Server, но рисование в ArcMap занимает так много времени, что система перестает отвечать на запросы в течение 10 минут или дольше. Во время отрисовки ArcMap один из процессоров максимально используется процессом SQL Server.
Мой запрос - это STIntersects буфера на линейном объекте (Shannon) по отношению к классу объектов многоугольника (Townlands) следующим образом;
SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape FROM dbo.TOWNLANDS as townlands
with(index(FDO_Shape))
JOIN dbo.Shannon on townlands.Shape.STIntersects
(Shannon.Shape.STBuffer(2.0))=1
Запрос возвращает 186 строк мгновенно. Их можно без проблем нарисовать на пространственной панели SQL Server Management Studio.
Когда я создаю слой запросов в ArcMap с точно таким же синтаксисом, система перестает отвечать на запросы, но в конечном итоге рисует. Похоже, что, возможно, ArcMap не использует пространственный индекс или делает это в отличие от SQL Server, что приводит к неэффективному запросу на SQL Server, который требует времени для возврата.
Кто-нибудь может посоветовать лекарство?
Спасибо
ArcGIS Desktop: 10.2
ArcSDE: 10.2
RDBMS: Database and version: SQL Server 2008
OS: Windows Server