Questa domanda riguarda ciò che accade con la riorganizzazione dei dati in un indice cluster quando viene eseguito un inserimento. Suppongo che dovrebbe essere più costoso fare inserti su una tabella che ha un indice cluster rispetto a uno che non lo è perché la riorganizzazione dei dati in un indice cluster comporta la modifica del layout fisico dei dati sul disco. Non sono sicuro di come esprimere la mia domanda se non attraverso un esempio che mi sono imbattuto nel lavoro.Indice cluster - multiparte vs indice di parte singola ed effetti di inserimenti/eliminazioni
Supponiamo che ci sia una tabella (Junk) e che ci siano due query sulla tabella, la prima query cerca per Nome e la seconda query cerca per Nome e Qualcosa. Come sto lavorando sul database ho scoperto che la tabella è stata creata con due indici, uno per sostenere ogni query, in questo modo:
--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
)
Ora, quando ho guardato i due indici, sembra che IX_Name è ridondante poiché IX_Name_Something può essere utilizzato da qualsiasi query che desideri cercare per Nome. Quindi vorrei eliminare IX_Name e rendere IX_Name_Something l'indice cluster invece:
--drop table Junk2
CREATE TABLE Junk2
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name_Something ON Junk2
(
Name, Something
)
Qualcuno ha suggerito che il primo schema di indicizzazione dovrebbe essere mantenuto in quanto porterebbe ad inserti più efficienti/cancella (si presuppone che non c'è bisogno di preoccuparsi aggiornamenti per Nome e Qualcosa). Avrebbe senso? Penso che il secondo metodo di indicizzazione sarebbe migliore poiché significa che è necessario mantenere un indice in meno.
Gradirei qualsiasi informazione su questo specifico esempio o indirizzarmi a maggiori informazioni sulla manutenzione degli indici cluster.
Bella spiegazione completa. –