Skip to content

Что следует иметь в виду, когда SQL Server просит индекс

Пересказ статьи Brent Ozar. Things to Consider When SQL Server Asks for an Index


В SQL Server мне нравится то, что при компиляции плана запроса он находит время, чтобы определить, какой индекс мог бы помочь запросу, который вы выполняете. Постоянные читатели блога знают, что я отпускаю множество шуток относительно качества этих рекомендаций - зачастую они невероятно плохи - однако даже плохие предложения могут оказаться полезными, если вы изучите их более внимательно.
Вот некоторые вещи, о которых мы думаем во время анализа:

  • Просил ли SQL Server тот же самый индекс вчера?

  • Использовался ли индекс хотя бы 100 раз за день?

  • Имеет ли таблица в запросе кластеризованный индекс? Если нет, вероятно, нам следует сначала подумать о добавлении этого индекса.

  • Имеет ли таблица 5 индексов или менее? Если индексов больше, самое время подумать об устранении дубликатов индексов с помощью моего метода D.E.A.T.H.

  • Содержит ли таблица менее 100М строк и размер менее 10Гб? Если так, то индексы проще строить на месте. При больших размерах следует подойти с особой осторожностью и планированием, поскольку даже добавление индекса может потребовать окна обслуживания в зависимости от скорости вашего железа.


После преодоления этих начальных барьеров, мы думаем о самих рекомендациях индексов:

  • Имеет ли индекс только один ключ и один включенный столбец? Если так, то, вероятно, имеет смысл добавить включенный столбец в ключ, пока первый ключ тоже имеет смысл.

  • Какие типы данных имеют столбцы? Если они большого размера (скажем, свыше 200 символов), рассмотрите вариант их исключения, особенно если они являются включенными столбцами.

  • Как много столбцов в индексе? Если больше пяти, подумайте об исключении включенных столбцов.

  • Рекомендуется ли более узкое подмножество существующего индекса? Если так, это, вероятно, не очень подойдет.

  • Рекомендуется ли более широкая версия существующего индекса? Если так, возможно, стоит удалить более узкую (старую) версию после замены её более широкой новой.

  • После ваших настроек на основе данного выше руководства, стал ли индекс точно соответствовать существующему индексу таблицы? Если так, оставьте его - пришло время пересмотра запросов с высоким уровнем чтения, а не рассмотрением рекомендаций относительно отсутствующих индексов.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.