Индексы SQL2005 - PullRequest
       22

Индексы SQL2005

0 голосов
/ 24 февраля 2010

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

**PK_CLUSTERED_INDEX**
 USER_ID
 COMPANY_ID
 DEPARTMENT_ID

**NON-unique_NON-clustered_INDEX**
 USER_ID
 COMPANY_ID

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

Ответы [ 3 ]

0 голосов
/ 24 февраля 2010

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

0 голосов
/ 24 февраля 2010

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

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

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

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

0 голосов
/ 24 февраля 2010

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

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

...