У нас очень большая база данных с сотнями неиспользуемых индексов по статистике DMV, которые накапливаются с момента последней перезагрузки сервера в июле. Один из наших администраторов баз сделал следующие предостерегающие заявления, которые не имеют смысла для меня:
- Прежде чем мы отбрасываем индекс, нам нужно убедиться, что он не обеспечивает ограничение уникальности, так как оптимизатору запросов может понадобиться этот индекс для существования.
- Всякий раз, когда создается индекс, статистика, связанная с этим индексом, также создается в SQL Server. Запрос может не использовать индекс, но он может использовать свою статистику. Таким образом, мы можем столкнуться с ситуацией, после отбрасывания индекса производительность конкретного запроса ухудшается. SQL Server не хранит статистику использования статистики. Хотя в нашей базе данных включена функция «Автоматическое создание статистики», я не знаю, какие все параметры должны быть выполнены внутри, прежде чем оптимизатор запросов создаст недостающую статистику.
Что касается # 1, мне кажется, что SQL Server действительно будет выполнять поиск по индексу, чтобы определить уникальность, прежде чем будет выполнена вставка / обновление, и, следовательно, индекс не будет отображаться как неиспользуемый.
Что касается № 2, это действительно возможно?
Кстати, когда я говорю, что индекс не используется, я имею в виду отсутствие поиска и сканирования.