Per aggiungere una nota molto importante su ciò che Mark S. ha menzionato nel suo post. Nello specifico script SQL menzionato nella domanda non è MAI possibile menzionare due diversi gruppi di file per l'archiviazione delle righe dei dati e della struttura dei dati dell'indice.
Il motivo è dovuto al fatto che l'indice creato in questo caso è un indice cluster nella colonna chiave primaria. I dati dell'indice cluster e le righe di dati della tabella non possono MAI trovarsi in gruppi di file diversi .
Quindi nel caso in cui tu abbia due gruppi di file nel tuo database, ad esempio PRIMARY e SECONDARY, lo script sotto menzionato memorizzerà i tuoi dati di riga e i dati dell'indice cluster sia sul gruppo di file PRIMARY stesso anche se ho menzionato un diverso gruppo di file ( [SECONDARY]
) per i dati della tabella . Ancora più interessante anche lo script funziona correttamente (quando mi aspettavo che generasse un errore dato che avevo dato due diversi gruppi di file: P). SQL Server fa il trucco dietro la scena in modo silenzioso e intelligente.
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [SECONDARY]
GO
NOTA: L'indice può risiedere in un gruppo di file diverso SOLO se l'indice che si sta creando non ha cluster .
Lo script seguente che crea un indice non cluster verrà creato nel [SECONDARY]
gruppo di file invece quando i dati della tabella risiedono già nel [PRIMARY]
gruppo di file:
CREATE NONCLUSTERED INDEX [IX_Categories] ON [dbo].[be_Categories]
(
[CategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Secondary]
GO
È possibile ottenere ulteriori informazioni su come l'archiviazione di indici non cluster in un gruppo di file diverso può aiutare le query a funzionare meglio. Ecco uno di questi link.