Estou criando um script de instalação do SQL e estou usando o script de outra pessoa como exemplo. Aqui está um exemplo do script:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
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 [PRIMARY]
GO
Alguém sabe o que o comando ON [PRIMARY] faz?
sql
sql-server
database
database-design
Icono123
fonte
fonte
0
oufalse
-se de garantir que seu código está operando em um estado conhecido, que é uma preocupação lógica e correção e não uma preocupação de otimização.ON PRIMARY
sintaxe duas vezes no script - um para a tabela e outro para a restrição de tabela. O que isso significa no caso da restrição de tabela em termos de armazenamento? Parece irrelevante ou redundante para mim. Sintaticamente, deveria ter sido suficiente mencioná-la uma vez no nível da tabela ou é realmente possível armazenar a tabela no grupo de arquivos PRIMARY e dados de restrição de tabela no grupo de arquivos NÃO-PRIMARY?Refere-se a qual grupo de arquivos o objeto em que você está criando reside. Portanto, seu grupo de arquivos principal pode residir na unidade D: \ do seu servidor. você pode criar outro grupo de arquivos chamado índices. Este grupo de arquivos pode residir na unidade E: \ do seu servidor.
fonte
ON [PRIMARY] criará as estruturas no grupo de arquivos "Primário". Nesse caso, o índice da chave primária e a tabela serão colocados no grupo de arquivos "Primário" no banco de dados.
fonte
Para adicionar uma nota muito importante sobre o que Mark S. mencionou em seu post. No script SQL específico mencionado na pergunta, NUNCA é possível mencionar dois grupos de arquivos diferentes para armazenar suas linhas de dados e a estrutura de dados do índice.
O motivo disso se deve ao fato de o índice que está sendo criado nesse caso ser um índice agrupado em sua coluna de chave primária. Os dados do índice clusterizado e as linhas de dados da sua tabela NUNCA podem estar em diferentes grupos de arquivos .
Portanto, caso você tenha dois grupos de arquivos no seu banco de dados, por exemplo, PRIMARY e SECONDARY, o script abaixo mencionado armazenará seus dados de linha e dados de índice em cluster no próprio grupo de arquivos PRIMARY, embora eu tenha mencionado um grupo de arquivos diferente (
[SECONDARY]
) para os dados da tabela . O mais interessante é que o script também é executado com êxito (quando eu esperava que desse um erro, como havia dado dois grupos de arquivos diferentes: P). O SQL Server faz o truque nos bastidores de maneira silenciosa e inteligente.NOTA: Seu índice pode residir apenas em um grupo de arquivos diferente se o índice que está sendo criado não tiver um cluster de natureza .
O script abaixo que cria um índice não agrupado em cluster será criado no
[SECONDARY]
grupo de arquivos, quando os dados da tabela já residirem no[PRIMARY]
grupo de arquivos:Você pode obter mais informações sobre como o armazenamento de índices não agrupados em cluster em um grupo de arquivos diferente pode ajudar no desempenho de suas consultas. Aqui está um desses links.
fonte