2010-02-24 2 views
0

сканировал через базу данных SQL2005 и увидел следующие два индекса для таблицы:SQL2005 индексы

**PK_CLUSTERED_INDEX** 
USER_ID 
COMPANY_ID 
DEPARTMENT_ID 

**NON-unique_NON-clustered_INDEX** 
USER_ID 
COMPANY_ID 

Моя первая мысль, падение последнего индекса, так как PK_CLUSTERED_INDEX уже содержит эти столбцы , правильный порядок и сортировку. Действительно ли последний индекс дает какие-либо выгоды?

ответ

0

При поиске по столбцам User_ID или User_ID и Company_ID оба индекса могут выполнить это. Тем не менее, только индекс PK был бы идеальным, если в дополнение к этим двум полям также запрашивается Department_Id.

Если запрос фильтрует User_ID и Company_ID и должен возвращать другие столбцы данных, индекс PK по-прежнему является лучшим, так как он имеет все данные, которые можно использовать. В то время как некластеризованный индекс не так, вероятно, понадобится Key Lookup, чтобы вытащить дополнительные поля, которые не так эффективны.

Это выглядит излишним для меня, поэтому я определенно подумаю об удалении его.

Чтобы узнать, действительно ли используется индекс/получить представление об уровне использования, вы можете запустить один из различных сценариев статистики использования индекса. Хорошим примером является here.

0

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

Сначала все вокруг лучше, вы ничего не теряете, сбросив второе.

0

Я бы отказался от индекса NON-unique_NON-clustered_INDEX, он избыточен и не нужен.

 Смежные вопросы

  • Нет связанных вопросов^_^