Tables
Les tables sont des objets de base de données qui contiennent toutes les données d'une base de données. Dans les tables, les données sont logiquement organisées en lignes et en colonnes, à la manière d'un tableur. Chaque ligne représente un enregistrement unique et chaque colonne représente un champ dans l'enregistrement. Par exemple, une table qui contient les données relatives aux employés d'une société peut contenir une ligne pour chaque employé et des colonnes représentant des informations sur l'employé, telles que son numéro, son nom, son adresse, sa fonction et son numéro de téléphone privé.
Le nombre de tables dans une base de données n'est limité que par le nombre d'objets autorisés dans une base de données (2 147 483 647). Une table standard définie par l'utilisateur peut comporter jusqu'à 1 024 colonnes. Le nombre de lignes dans la table n'est limité que par la capacité de stockage du serveur.
Vous pouvez affecter des propriétés à la table et à chaque colonne de la table pour contrôler les données qui sont autorisées et d'autres propriétés. Par exemple, vous pouvez créer des contraintes sur une colonne pour interdire les valeurs NULL ou fournir une valeur par défaut si aucune valeur n'est spécifiée, ou vous pouvez affecter une contrainte de clé sur la table qui applique l'unicité ou définit une relation entre les tables.
Les données de la table peuvent être compressées par ligne ou par page. La compression des données peut permettre de stocker plus de lignes sur une page. Pour plus d'informations, consultez Compression de données.
Types de tables
Outre le rôle standard des tables de base définies par l'utilisateur, SQL Server met à votre disposition les types de tables suivants, qui remplissent une fonction particulière dans une base de données.
Tables partitionnées
Les tables partitionnées sont des tables dont les données sont divisées horizontalement en unités qui peuvent être réparties sur plusieurs groupes de fichiers dans une base de données. Le partitionnement facilite l'administration des tables ou des index volumineux en permettant de consulter ou de gérer des sous-ensembles de données rapidement et efficacement, tout en préservant l'intégrité de l'ensemble de la collection. Par défaut, SQL Server 2012 prend en charge jusqu'à 15 000 partitions. Pour plus d'informations, consultez Tables et index partitionnés.Tables temporaires
Les tables temporaires sont stockées dans tempdb. Il en existe deux types : locale et globale. Elles se différencient par leur nom, leur visibilité et leur disponibilité. Le premier caractère du nom des tables temporaires locales est un signe dièse (#) unique. Ces tables sont visibles uniquement à la connexion courante de l'utilisateur et sont supprimées dès que l'utilisateur se déconnecte de l'instance de SQL Server. En revanche, le nom des tables temporaires globales commence par deux signes dièse (##) ; ces tables sont visibles à tout utilisateur après avoir été créées et ne sont supprimées qu'une fois que l'ensemble des utilisateurs ayant fait référence à la table se sont déconnectés de l'instance de SQL Server.Tables système
SQL Server stocke les données qui définissent la configuration du serveur et toutes ses tables dans un ensemble de tables spécifique appelé « tables système ». Les utilisateurs ne peuvent pas directement interroger ou mettre à jour les tables système. Les informations contenues dans les tables système sont disponibles via les affichages système. Pour plus d'informations, consultez Vues système (Transact-SQL).Tableaux larges
Les tableaux larges utilisent des colonnes éparses pour porter à 30 000 le total de colonnes qu'un tableau peut contenir. Les colonnes éparses sont des colonnes ordinaires qui ont un stockage optimisé pour les valeurs NULL. Les colonnes éparses réduisent l'espace nécessaire pour les valeurs NULL, en échange d'une augmentation du coût d'extraction des valeurs autres que NULL. Un tableau large a défini un jeu de colonnes, qui est une représentation XML non typée qui combine toutes les colonnes éparses d'une table dans une sortie structurée. Le nombre d'index et de statistiques est également porté à 1 000 et à 30 000, respectivement. La taille maximale d'une ligne de tableau large est de 8 019 octets. Par conséquent, la plupart des données dans une ligne particulière doivent avoir la valeur NULL. Le nombre maximal de colonnes non éparses plus les colonnes calculées dans un tableau large reste 1 024.Les tableaux larges ont les conséquences suivantes sur les performances :
Les tableaux larges peuvent augmenter le coût de gestion des index dans la table. Nous recommandons que le nombre d'index dans un tableau large soit limité aux index requis par la logique métier. L'augmentation du nombre d'index a une incidence directe sur le temps de compilation DML et les besoins en mémoire. Les index non cluster définis doivent être des index filtrés appliqués aux sous-ensembles de données. Pour plus d'informations, consultez Créer des index filtrés.
Les applications peuvent ajouter et supprimer dynamiquement des colonnes dans les tableaux larges. Lorsque des colonnes sont ajoutées ou supprimées, des plans de requête compilés sont également invalidés. Nous vous recommandons de concevoir une application qui correspond à la charge de travail prévue afin que les modifications de schéma soient réduites.
Lorsque des données sont ajoutées et supprimées dans un tableau large, la performance peut en être affectée. Les applications doivent être conçues pour la charge de travail prévue afin que les modifications apportées aux données de table soient réduites.
Limitez l'exécution d'instructions DML dans un tableau large qui mettent à jour plusieurs lignes d'une clé de clustering. Ces instructions peuvent requérir des ressources de mémoire significatives pour la compilation et l'exécution.
Basculez les opérations de partitions dans les tableaux larges qui peuvent être lentes et requérir de grandes quantités de mémoire pour le traitement. Les performances et besoins en mémoire sont proportionnels au nombre total de colonnes dans les partitions à la fois sources et cibles.
Mettez à jour les curseurs qui mettent à jour des colonnes spécifiques dans un tableau large qui doivent répertorier explicitement les colonnes dans la clause FOR UPDATE. Cela permettra de mieux optimiser la performance lorsque vous utilisez des curseurs.
Tâches de table communes
Le tableau suivant fournit des liens vers les tâches couramment associées à la création ou à la modification d'une table.
Tâches de table |
Rubrique |
---|---|
Explique comment créer une table. |
|
Explique comment supprimer une table. |
|
Explique comment créer une table qui contient une partie ou la totalité des colonnes d'une table existante. |
|
Explique comment renommer une table. |
|
Explique comment afficher les propriétés de la table. |
|
Explique comment déterminer si d'autres objets, tels qu'une vue ou une procédure stockée, dépendent d'une table. |
Le tableau suivant fournit des liens vers les tâches couramment associées à la création ou à la modification de colonnes dans une table.
Tâches de colonne |
Rubrique |
---|---|
Explique comment ajouter des colonnes à une table existante. |
Ajouter des colonnes à une table (moteur de base de données) |
Explique comment supprimer des colonnes d'une table. |
|
Explique comment modifier le nom d'une colonne. |
|
Explique comment copier des colonnes d'une table vers une autre, en copiant uniquement la définition de la colonne ou la définition et les données. |
Copier des colonnes d'une table vers une autre (Moteur de base de données) |
Explique comment modifier une définition de colonne, en modifiant le type de données ou une autre propriété. |
|
Explique comment modifier l'ordre dans lequel les colonnes apparaissent. |
|
Explique comment créer une colonne calculée dans une table. |
|
Explique comment spécifier une valeur par défaut pour une colonne. Cette valeur est utilisée si une autre valeur n'est pas fournie. |