Мои знания более низкого уровня по SQL (Server 2008) ограничены, и теперь их проверяют наши администраторы баз данных.Позвольте мне объяснить (я упомянул очевидные заявления в надежде, что я прав, но если вы видите что-то не так, пожалуйста, скажите мне) сценарий:
У нас есть таблица, которая содержит «Распоряжения суда» для людей.Когда я создал таблицу (Имя: CourtOrder), я создал ее следующим образом:
CREATE TABLE dbo.CourtOrder
(
CourtOrderID INT NOT NULL IDENTITY(1,1), (Primary Key)
PersonId INT NOT NULL,
+ around 20 other fields of different types.
)
Затем я применил некластеризованный индекс к первичному ключу (для эффективности).Мои причины в том, что это уникальное поле (первичный ключ), и его следует индексировать, главным образом для целей выбора, поскольку мы часто Select from table where primary key = ...
Затем я применял индекс CLUSTERED к PersonId.Причина была в том, чтобы группировать заказы для конкретного человека физически, так как подавляющее большинство работ - это заказы для человека.Итак, select from mytable where personId = ...
Я был обречен на это сейчас.Мне сказали, что мы должны поместить кластерный индекс в первичный ключ, а обычный индекс - в personId.Это кажется мне очень странным.Прежде всего, зачем кластеризовать индекс в уникальный столбец?что это кластеризация?Конечно, это пустая трата кластерного индекса?Я полагал, что нормальный индекс будет использоваться для уникального столбца.Кроме того, кластеризация индекса будет означать, что мы не можем кластеризовать другой столбец (по одному на таблицу, верно?).
Мне сказали, что я допустил ошибку, потому что они считают, что кластеризованный индексPersonId сделает вставки медленными.При увеличении скорости выбора на 5% мы бы получили снижение скорости на 95% при вставках и обновлениях.Это правильно и правильно?
Они говорят, что, поскольку мы кластеризируем personId, SQL Server должен перестраивать данные, когда мы вставляем или вносим изменения в PersonId.
Итак, я спросилзачем SQL иметь концепцию CLUSTERED INDEX, если он такой медленный?Это так медленно, как они говорят?Как мне настроить индексы для достижения оптимальной производительности?Я бы подумал, что SELECT используется больше, чем INSERT ... но они говорят, что у нас есть проблемы с блокировкой на INSERTS ...
Надеюсь, кто-то может мне помочь.