Um eine sehr wichtige Anmerkung zu dem hinzuzufügen, was Mark S. in seinem Beitrag erwähnt hat. In dem spezifischen SQL-Skript, das in der Frage erwähnt wurde, können Sie NIEMALS zwei verschiedene Dateigruppen zum Speichern Ihrer Datenzeilen und der Indexdatenstruktur erwähnen.
Der Grund dafür liegt in der Tatsache, dass der in diesem Fall erstellte Index ein Clustered-Index in Ihrer Primärschlüsselspalte ist. Die Clustered-Indexdaten und die Datenzeilen Ihrer Tabelle dürfen sich NIEMALS in verschiedenen Dateigruppen befinden .
Wenn Sie also zwei Dateigruppen in Ihrer Datenbank haben, z. B. PRIMARY und SECONDARY, speichert das unten genannte Skript Ihre Zeilendaten und Clustered-Indexdaten sowohl in der PRIMARY-Dateigruppe selbst, obwohl ich [SECONDARY]
für die Tabellendaten eine andere Dateigruppe ( ) erwähnt habe . Interessanter ist, dass das Skript auch erfolgreich ausgeführt wird (als ich erwartet hatte, dass es einen Fehler gibt, da ich zwei verschiedene Dateigruppen angegeben hatte: P). SQL Server erledigt den Trick hinter den Kulissen leise und intelligent.
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
HINWEIS: Ihr Index kann sich NUR in einer anderen Dateigruppe befinden, wenn der erstellte Index nicht gruppiert ist .
Das folgende Skript, das einen nicht gruppierten Index erstellt, wird [SECONDARY]
stattdessen für die Dateigruppe erstellt, wenn sich die Tabellendaten bereits in der [PRIMARY]
Dateigruppe befinden:
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
Sie können weitere Informationen darüber erhalten, wie das Speichern von nicht gruppierten Indizes in einer anderen Dateigruppe die Leistung Ihrer Abfragen verbessern kann. Hier ist ein solcher Link.