2008-08-29 6 views
23

En termes de performance et optimisations:SQL Server - L'ordre des colonnes est-il important?

  • Lors de la construction d'une table dans SQL Server, il ne importe quel ordre je mets les colonnes?
  • Est-ce important si ma clé primaire est la première colonne?
  • Lors de la construction d'un index à plusieurs champs, est-ce important que les colonnes soient adjacentes?
  • En utilisant la syntaxe ALTER TABLE, est-il possible de spécifier dans quelle position je veux ajouter une colonne?
    • Sinon, comment puis-je déplacer une colonne vers une position de différence?
+0

Voir http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns – gbn

+0

Voici une question similaire sur DBA.SE: [Est-ce que l'ordre des colonnes dans une table est définition question?] (http://dba.stackexchange.com/q/18719/2660) –

Répondre

3

Je dirais que la réponse à toutes ces questions est non, barbante mon expérience avec MS-SQL va jusqu'à SQL2000. Peut-être une autre histoire dans SQL2005

1

Non à la première 3 parce que l'indice contiendra les données et pas la dernière fois aussi

3

Pour la quatrième puce: Non, vous ne pouvez pas spécifier où vous souhaitez ajouter colonne. Voici la syntaxe pour ALTER TABLE: https://msdn.microsoft.com/en-us/library/ms190273.aspx

En MySQL, ils offrent un ALTER TABLE ADD ... AFTER ... mais cela n'apparaît pas dans T-SQL.

Si vous souhaitez réorganiser les colonnes, vous devrez reconstruire la table.

Editer: Pour votre dernier point dernière puce, vous devrez déplacer la table et recréer pour réorganiser les colonnes. Certains outils graphiques qui manipulent des bases de données SQL le feront pour vous et donneront l'impression que vous réorganisez des colonnes, alors vous pourriez vouloir examiner cela.

+0

lien résolu. lutte contre la pourriture depuis [404] –

8

Dans SQL Server 2005, le placement des colonnes de longueur variable Nullable a un impact sur l'espace. La mise en place de colonnes de taille variable NULL à la fin de la définition peut réduire la consommation d'espace. SQL Server 2008 ajoute la fonctionnalité de colonne "SPARSE" qui annule cette différence.

Voir here.

-2

Pour la première puce:

Oui, colonne ordre ne la matière, au moins si vous utilisez blobs dépréciés image, text ou ntext et en utilisant SQL Server 2005. < =

Dans ces cas, vous devriez avoir ces colonnes à la 'fin' de la table, et il y a un hit de performance chaque fois que vous en récupérez un.

Si vous récupérez les données d'une telle table à l'aide d'un DAL, cet emplacement est idéal pour le modèle Lazy Load.

+0

Pourquoi la downvote? – egrunin

+0

Je pensais avoir commenté. Déchets complets http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns/6692107#6692107 – gbn

0

L'ordre des colonnes n'a pas d'importance lors de la création d'une table. Nous pouvons organiser les colonnes tout en récupérant les données de la base de données. La clé primaire peut être définie sur n'importe quelle colonne ou combinaison de colonnes.

Questions connexes