Запрос занимает много времени, несмотря на индексы - PullRequest
0 голосов
/ 26 апреля 2018
SELECT id,
    file_name As 'Document',
    ref_number AS 'Ref Number',
    entered_by As 'Entered By',
    created_date As 'Created Date',
    manpower,
    user_path,
    owner_path
FROM t_document_holder
WHERE 1 = 1
    AND incoming_to = 'Criteria'
    AND incoming_from = 'Criteria'
    AND CONTAINS (
        user_path,
        'Criteria'
        )
ORDER BY created_date,
    entered_by

Индексы:

id = кластеризованный индекс
ref_number = некластеризованный
enter_by = некластеризованный индекс
рабочая сила = некластеризованный индекс
user_path и owner_path = индекс полнотекстового поиска
входящий_вход и входящий_файл = некластеризованный индекс

Подводя итог, большинство столбцов (все в состоянии WHERE) являются частью индекса, но все жеэтот запрос занимает 25 секунд, чтобы вернуть 527 строк из 115 000 строк в таблице.

План выполнения Query Execution Plan

Может кто-то любезно подсказать, почему он принимаеттак долго возвращать эти строки.

План выполнения запроса для некластеризованного индекса

enter image description here

1 Ответ

0 голосов
/ 26 апреля 2018

После нескольких часов поиска в Google я нашел решение. Решение состояло в том, чтобы перестроить все индексы на этой конкретной таблице, и это работало как прелесть. Для более подробной информации обратитесь к этой статье.

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/044316b5-32d7-4264-bde4-1ebfb5633262/order-by-extremely-slow-in-sql-2008-r2?forum=transactsql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...