2015-09-18 4 views
0

У меня есть действительно большой запрос на выбор sql, который я должен оптимизировать, потому что он занимает 40 секунд.CLUSTERED Index seek take too much cost

Я использую Sql Sentry Plan Explorer для этого, и я обнаружил, что 2 операции «Clustered Index Seek» (в таблице строк в 300 тыс. Строк) занимают почти 60% всего времени процесса.

Мои вопросы: Что может заставить этот «кластерный поиск индекса» заняться так много времени? Когда я делаю простой выбор на этой таблице, требуется всего 2 секунды, но поиск этого индекса занимает 24 секунды ...

Я также проверил фрагментацию индекса и его более 2%.

ПРИМЕЧАНИЕ: Извините, я не размещаю детали, но им не разрешено это делать.

+1

Нет подробностей, нет ответа. Почему, по вашему мнению, это ошибка кластеризованного индекса? Сколько строк вы пытаетесь прочитать и сколько столбцов? Что делает запрос? На столе много споров? Любые другие запросы выполняются одновременно? Ваш запрос ожидает получения блокировок, принадлежащих другим? Что значит «простой выбор»? –

+0

Проводник плана не дает вам точных затрат, он дает вам «оценочные затраты» на основе «статистики». Это означает, что он может быть прав около 60%, но может и не быть. Но опять же, без простого запроса трудно сказать. – xpy

+0

@PanagiotisKanavos. Дело в том, что это действительно сложный запрос, включающий огромное количество разных таблиц, представлений, строк и колонок. План выполнения дает мне, что 60% времени он только в этой операции «поиск индекса». При простом выборе я имею в виду «Выбрать * из таблицы» занимает 2 секунды с полями 300 Кбайт. –

ответ

1

В первый раз вы можете попробовать обновить статистику.

Например, так.

UPDATE STATISTICS ... 

Или так.

EXEC sp_updatestats