Производительность SQL Server 2008: нет индексов против плохих индексов? - PullRequest
1 голос
/ 03 июня 2009

У меня странная проблема в Microsoft SQL Server 2008. У меня есть большая база данных (20 ГБ) с 10 таблицами, и я пытаюсь показать, как правильно создавать индексы.

Вот моя проблема: по некоторым вложенным запросам я получаю более быстрые результаты без с использованием индексов! Это близко (одна или две секунды), но в некоторых случаях использование вообще никаких индексов, кажется, заставляет эти запросы работать быстрее ... Я запускаю Checkpoiunt и DBCC dropcleanbuffers для сброса кэшей перед запуском сценариев, поэтому я ' м вроде как потерялся.

Что может быть причиной этого? Я точно знаю, что индексы плохо построены (подумайте, по одному индексу на релевантное поле), весь смысл в том, чтобы доказать важность их правильного построения, но это не должно быть медленнее, чем отсутствие индексов в все, верно?

РЕДАКТИРОВАТЬ: вот один из виновных запросов:

SET STATISTICS TIME ON
SET STATISTICS IO ON

USE DBX;
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO

SELECT * FROM Identifier where CarId in (SELECT CarID from Car where ManufactId = 14) and DataTypeId = 1

Таблица идентификаторов: - IdentifierId int не нуль - CarId int not null - DataTypeId int не равен NULL - Alias ​​nvarchar (300)

Автомобильный стол: - CarId int not null - ManufactId int не нуль - (после нескольких полей, все nvarchar (100)

Каждая из этих маркированных точек имеет индекс вместе с некоторыми индексами, которые одновременно хранят две из них одновременно (например, CarId и DataTypeId).

Наконец, таблица идентификаторов содержит более миллиона записей, а таблица Car - два или три миллиона

Ответы [ 11 ]

0 голосов
/ 03 июня 2009

Проверьте план выполнения, чтобы увидеть, использует ли он один из этих индексов, который вы "знаете" как плохой?

Как правило, индексирование замедляет запись данных и может помочь ускорить чтение данных.

Так что да, я согласен с вами. никогда не должно быть медленнее, чем отсутствие индексов вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...