Para agregar una nota muy importante sobre lo que Mark S. ha mencionado en su publicación. En el SQL Script específico que se ha mencionado en la pregunta, NUNCA puede mencionar dos grupos de archivos diferentes para almacenar sus filas de datos y la estructura de datos del índice.
La razón por la cual se debe al hecho de que el índice que se está creando en este caso es un índice agrupado en su columna de clave principal. Los datos del índice agrupado y las filas de datos de su tabla NUNCA pueden estar en diferentes grupos de archivos.
Entonces, en caso de que tenga dos grupos de archivos en su base de datos, p. Las secuencias de comandos PRIMARIO y SECUNDARIO y las que se mencionan a continuación almacenarán los datos de la fila y los datos del índice agrupado en el grupo de archivos PRIMARIO aunque haya mencionado un grupo de archivos diferente ([SECONDARY]
) para los datos de la tabla. Lo que es más interesante, el script también se ejecuta correctamente (cuando esperaba que diera un error, ya que había dado dos grupos de archivos diferentes: P). SQL Server hace el truco detrás de la escena silenciosa e inteligentemente.
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: Su índice puede residir en un grupo de archivos diferentes sólo si el índice está creando es no agrupado en la naturaleza.
El siguiente script que crea un índice no agrupado será creado en [SECONDARY]
grupo de archivos en lugar cuando los datos de la tabla ya reside en el grupo [PRIMARY]
archivo:
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
Puede obtener más información sobre cómo almacenar no los índices agrupados en un grupo de archivos diferente pueden ayudar a que sus consultas rindan mejor. Here es uno de esos enlaces.
Esto también significa que usualmente es ** inútil y se puede eliminar de forma segura ** del script. – MGOwen
Sí, de la misma manera puedes omitir las inicializaciones de variables a 0 y falso, porque es solo el predeterminado, ¿verdad? –
@MarkSowul A menos que tenga una buena razón para usar esto para optimizar el rendimiento, sí, está bien omitirlo y dejar que ocurra lo predeterminado. (De ahí el MGO incluido "generalmente".) Inicializar las variables a '0' o 'falso' es sobre asegurar que su código esté operando en un estado conocido, lo cual es una preocupación lógica y de corrección y no una preocupación de optimización. – jpmc26