Этот вопрос касается того, что происходит с реорганизацией данных в кластерном индексе при выполнении вставки. Я полагаю, что в таблицах с кластеризованным индексом должно быть более дорогостоящим делать вставки, чем нет, потому что реорганизация данных в кластерном индексе связана с изменением физического расположения данных на диске. Я не уверен, как рассказать о моем вопросе, кроме примера, с которым я столкнулся на работе.Кластерный индекс - многочастный индекс и индекс вставки/удаления
Предположим, что есть таблица (Junk), и есть два запроса, которые выполняются в таблице, первый запрос выполняет поиск по имени, а второй запрос выполняет поиск по имени и ко всему. Как я работаю в базе данных, я обнаружил, что таблица была создана с двумя индексами, один для поддержки каждого запроса, например, так:
--drop table Junk1
CREATE TABLE Junk1
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name ON Junk1
(
Name
)
CREATE NONCLUSTERED INDEX IX_Name_Something ON Junk1
(
Name, Something
)
Теперь, когда я смотрел на двух индексов, кажется, что IX_Name является избыточное с IX_Name_Something может использоваться любым запросом, который хочет выполнить поиск по имени. Поэтому я хотел бы устранить IX_Name и сделать IX_Name_Something кластерный индекс вместо:
--drop table Junk2
CREATE TABLE Junk2
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name_Something ON Junk2
(
Name, Something
)
Кто-то предположил, что первая схема индексации должна быть, так как это приведет к повышению эффективности вставок/удалений (предположим, что нет необходимости беспокоиться о обновления для имени и чего-то). Это имело бы смысл? Я думаю, что второй метод индексирования будет лучше, так как это означает, что нужно поддерживать еще один индекс.
Я был бы признателен за любое понимание этого конкретного примера или указание мне больше информации об обслуживании кластеризованных индексов.
Ницца, подробное объяснение. –