Я использую SQL Server 2008, и в одной из моих таблиц я реализовал (кластеризованный) первичный ключ для его идентификатора. Вот описание таблицы:
Идентификатор:
- IdentifierId int NOT NULL PK
- Псевдоним nvarchar (200)
- DataType int NOT NULL
Я сделал два индекса: один для псевдонима, а другой для DataType.
Однако я просто заметил кое-что странное.
При выполнении следующего запроса:
SELECT * FROM IDENTIFIER WHERE DataType = 1
На самом деле запрос выполняется медленнее с индексами и первичным ключом, чем без них; это займет примерно 10 секунд дольше! Индексы не фрагментированы - я проверил - и я также использую это
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
перед самим запросом.
Эта таблица довольно большая и содержит несколько миллионов записей. Индексы и PK играют важную роль в большинстве запросов, но в этом случае я не могу понять, почему запрос выполняется с ними на медленнее . Есть идеи?
Заранее спасибо
РЕДАКТИРОВАТЬ: план выполнения показывает, что используется только кластеризованный индекс и переменная DataType в настоящее время достигает 150.