Назад | Перейти на главную страницу

Почему мой недавно добавленный индекс отображался как «статистика»?

Мы пытаемся настроить нашу базу данных SQL Server 2005, так как у нас, откровенно говоря, нет индексации наших таблиц, а загрузка ЦП достигает 100%.

Мы запускали профилировщик SQL Server в течение трехчасового периода, который покрывает время, когда мы наиболее часто используем наш веб-интерфейс.

После того, как мы загрузили это в помощник по настройке ядра СУБД, он сделал ряд предложений по индексам и статистике. Вот пример одного из них:

CREATE NONCLUSTERED INDEX [_dta_index_ChangeLog_9_245575913__K5_K2_K3_K4] ON [dbo].[ChangeLog] 
(
    [ChangePrimaryKey] ASC,
    [TableID] ASC,
    [ChangeDate] ASC,
    [ChangeType] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO

..но это не удается, потому что уже существует «индекс или статистика с именем '_dta_index_ChangeLog_9_245575913__K5_K2_K3_K4'», которые я могу увидеть в разделе статистики этой таблицы в SQL Server Management Studio. Единственное, что у меня есть в разделе «Индексы» - это кластерный индекс по первичному ключу.

Почему он был добавлен как статистика, а не как индекс?

Статистика - это своего рода некластеризованные индексы, которые автоматически создаются SQL Server на основе использования базы данных, и они используют одно и то же пространство имен (вы можете увидеть некоторые метаданные индекса в sys.indexes).

Просто попробуйте создать индекс с более значимым именем, например IDX_ChangeLog, он должен работать нормально.