Почему SQL Server 2005 Dynamic Management View сообщает об отсутствующем индексе, если это не так?
Я использую SQL Server 2005 и представление динамического управления sys.dm_db_missing_index_details
, Он продолжает говорить мне, что Table1 действительно нужен индекс для ColumnX и ColumnY, но этот индекс уже существует! Я даже бросил и воссоздал его пару раз безрезультатно.
Более подробная информация: представление списков Column1 под equality_columns
, Столбец 2 указан в inequality_columns
Итак, индекс, который я создал:
create index IndexA on Table1 (Column1 asc, Column2 asc)
Разве это не индекс sys.dm_db_missing_index_details
говорит мне, что мне нужно?
3 ответа
Случайная мысль: а что если один из столбцов лучше объявить "DESC"?
Это полезно для предложений ORDER BY, и я видел уменьшение логического ввода-вывода вдвое.
Хотя это довольно старый пост, я нашел здесь полезную статью http://www.simple-talk.com/sql/database-administration/fine-tuning-your-database-design-in-sql-2005/ которая ссылается на хорошую статью Microsoft об ограничениях DMVs http://msdn.microsoft.com/en-us/library/ms345485.aspx
Если вы удалили и создали индекс, sp_update_stats не должен на него влиять (проблема не в статистике)
Возможно, это из-за того, что данные DMV уже устарели. Предлагает ли фактический план выполнения также отсутствующий индекс в SSMS?
Из книг онлайн
Информация, возвращаемая sys.dm_db_missing_index_details, обновляется, когда запрос оптимизируется оптимизатором запросов, и не сохраняется. Отсутствующая информация индекса сохраняется только до перезапуска SQL Server. Администраторы базы данных должны периодически делать резервные копии отсутствующей информации индекса, если они хотят сохранить ее после перезапуска сервера.
Чтобы определить, к каким пропущенным группам индекса относится тот или иной конкретный отсутствующий индекс, вы можете запросить динамическое административное представление sys.dm_db_missing_index_groups, сопоставив его с sys.dm_db_missing_index_details на основе столбца index_handle.