Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Index with included and without included simultaniously  [new]
alister
Member

Откуда:
Сообщений: 91
Есть огромная табличка, несколько сот миллионов записей, с большим количеством полей, на ней среди прочего 2 индекса
по одинаковым полям
(ManagerID, OrderDateTime)
но один индекс с двумя десятками included полей, а второй без included полей.
Есть ли смысл держать на таблице оба индекса или имеет смысл индекс без included полей удалить? Или наоборот, удалить другой индекс.
Оптимизатор в тех запросах, что смотрел, выбирает индекс с included полями.
10 дек 14, 19:48    [16979928]     Ответить | Цитировать Сообщить модератору
 Re: Index with included and without included simultaniously  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для запросов, в которых используются данные из include-полей, индекс с include будет, скорее всего, выгоднее без вариантов.

Для запросов, которые не используют данные из include-полей, индекс без инклудов будет выгоднее случаях, если он:
  • используется для доступа в режиме сканирования, потому что листовой левел с большой долей вероятности содержит меньше страниц;
  • используется для доступа в режиме поиска, и его глубина меньше, чем у индекса с инклудами.

    Стоит ли некоторое ускорение в последних двух сценариях затрат на поддержание еще одного индекса - решать вам. Скорее всего, нет, но могут быть ньюансы.

    Сообщение было отредактировано: 10 дек 14, 19:58
  • 10 дек 14, 19:55    [16979963]     Ответить | Цитировать Сообщить модератору
     Re: Index with included and without included simultaniously  [new]
    alister
    Member

    Откуда:
    Сообщений: 91
    Может это поможет, база используется только для отчетов
    10 дек 14, 20:02    [16979997]     Ответить | Цитировать Сообщить модератору
     Re: Index with included and without included simultaniously  [new]
    NickAlex66
    Member

    Откуда:
    Сообщений: 319
    alister
    Может это поможет, база используется только для отчетов

    1. Если порядок ключевых полей в индексе одинаковый, то без include можно удалить.
    если на 1 вопрос ответ утвердительный, то:
    2. Если только для отчетов, то освободите немого места.
    3. Если есть хинты на индекс без include, то их придется найти и убрать до удаления индекса.
    10 дек 14, 20:31    [16980119]     Ответить | Цитировать Сообщить модератору
     Re: Index with included and without included simultaniously  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2322
    Посмотрите как исользуются эти индексы - sys.dm_db_index_usage_stats.
    Если второй индекс не используется, то можно грохнуть, хотя, учитывая что база используется только для отчетов, профит будет минимальный.
    11 дек 14, 00:54    [16980957]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить