Подсказки пространственного индекса не работают в SQL Server 2008?

введите описание изображения здесьИспользуя следующее

SELECT * 
FROM dbo.GRSM_WETLAND_POLY    
CROSS APPLY (SELECT TOP 1 Name, shape     
             FROM GRSM.dbo.GRSM_Trails --WITH(index(S319_idx))    
             WHERE GRSM_Trails.Shape.STDistance(dbo.GRSM_WETLAND_POLY.Shape) IS NOT NULL     
            ORDER BY GRSM_Trails.Shape.STDistance(dbo.GRSM_WETLAND_POLY.Shape) ASC) fnc

работает очень медленно на 134 строках (56 секунд), однако, если указатель индекса не прокомментирован, он возвращает

Msg 8635, уровень 16, состояние 4, строка 3
Обработчику запросов не удалось создать план запроса с подсказкой пространственного индекса. Причина: пространственные индексы не поддерживают компаратор, указанный в предикате. Попробуйте удалить подсказки индекса или удалить SET FORCEPLAN.

План выполнения показывает стоимость фильтра на уровне 98%, он запрашивает 1400 строк в другой таблице, поэтому общая стоимость составляет 134 * 1400 индивидуальных поисков, что и есть задержка. Сами по себе пространственные индексы в каждой таблице работают отлично, без фрагментации, с 99% -ной полнотой страниц и с использованием среды для всех 4 уровней сетки с 16 ячейками на объект. Изменение свойств пространственного индекса в любой таблице не повлияло на производительность.

Документация предполагает, что подсказки пространственного индекса могут использоваться только в запросах в SQL Server 2012, но, конечно же, есть способ обойти это?


person tpcolson    schedule 07.05.2012    source источник


Ответы (1)


Главный вопрос будет в том, зачем вы навязываете намек? Если SQL Server не выбрал индекс в сгенерированном плане, принудительное использование другого плана почти всегда приведет к снижению производительности.

Что вам нужно сделать, так это проанализировать каждый узел полученного плана выполнения, чтобы увидеть, где находится узкое место, на которое уходит так много времени. Если вы разместите распечатанный экран, возможно, мы сможем помочь

person Diego    schedule 07.05.2012
comment
Я добавил снимок экрана. Как было опубликовано, принудительная подсказка не работает, и сгенерированный план показывает, что горлышко бутылки в значительной степени ограничено фильтром, который я, похоже, не могу обойти. - person tpcolson; 08.05.2012