Je crée un script de configuration SQL et j'utilise le script de quelqu'un d'autre comme exemple. Voici un exemple du 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
Quelqu'un sait-il ce que fait la commande ON [PRIMARY]?
sql
sql-server
database
database-design
Icono123
la source
la source
0
ou lefalse
fait de s'assurer que votre code fonctionne dans un état connu, ce qui est une préoccupation logique et d'exactitude et non une préoccupation d'optimisation.ON PRIMARY
syntaxe deux fois dans le script - une pour la table et une autre pour la contrainte de table. Qu'est-ce que cela signifie en cas de contrainte de table en termes de stockage? Cela me semble hors de propos ou redondant. Syntaxiquement, il aurait dû suffire de le mentionner une fois au niveau de la table ou est-il vraiment possible de stocker la table dans le groupe de fichiers PRIMAIRE et les données de contrainte de table dans le groupe de fichiers NON PRIMAIRE?Il fait référence au groupe de fichiers sur lequel se trouve l'objet que vous créez. Votre groupe de fichiers principal pourrait donc résider sur le lecteur D: \ de votre serveur. vous pouvez ensuite créer un autre groupe de fichiers appelé Index. Ce groupe de fichiers peut résider sur le lecteur E: \ de votre serveur.
la source
ON [PRIMARY] créera les structures sur le groupe de fichiers "Primary". Dans ce cas, l'index de clé primaire et la table seront placés dans le groupe de fichiers "Primaire" de la base de données.
la source
Pour ajouter une note très importante sur ce que Mark S. a mentionné dans son article. Dans le script SQL spécifique mentionné dans la question, vous ne pouvez JAMAIS mentionner deux groupes de fichiers différents pour stocker vos lignes de données et la structure des données d'index.
La raison est due au fait que l'index en cours de création dans ce cas est un index clusterisé sur votre colonne de clé primaire. Les données d'index cluster et les lignes de données de votre table ne peuvent JAMAIS se trouver sur différents groupes de fichiers .
Donc, si vous avez deux groupes de fichiers dans votre base de données, par exemple PRIMARY et SECONDARY, le script mentionné ci-dessous stockera vos données de ligne et vos données d'index cluster sur le groupe de fichiers PRIMARY lui-même, même si j'ai mentionné un groupe de fichiers différent (
[SECONDARY]
) pour les données de la table . Plus intéressant encore, le script s'exécute avec succès (lorsque je m'attendais à ce qu'il donne une erreur car j'avais donné deux groupes de fichiers différents: P). SQL Server fait le tour de la scène silencieusement et intelligemment.REMARQUE: votre index peut résider sur un groupe de fichiers différent UNIQUEMENT si l'index en cours de création est de nature non groupé .
Le script ci-dessous qui crée un index non clusterisé sera créé sur
[SECONDARY]
le groupe de fichiers à la place lorsque les données de la table résident déjà sur[PRIMARY]
le groupe de fichiers:Vous pouvez obtenir plus d'informations sur la façon dont le stockage d'index non cluster sur un groupe de fichiers différent peut aider vos requêtes à mieux fonctionner. Voici un tel lien.
la source