L'ordre des colonnes dans une table aura un très faible impact sur les performances, par rapport à l'impact sur les performances de la conception de votre base de données (entités, attributs et relations), de la conception de vos transactions et de la conception de vos requêtes.
Pour savoir si la différence est non négligeable, vous devez vraiment configurer des tests et comparer les résultats.
En règle générale, je mets la clé primaire comme première colonne, puis la ou les clés étrangères, puis les clés naturelles et les colonnes fréquemment consultées. Je mets généralement les cordes les plus longues vers la fin de la rangée. Mais ce n'est pas nécessairement une optimisation des performances, mais plutôt une préférence de style que j'utilise par commodité.
L'ordre des colonnes peut avoir un impact sur la taille de la ligne dans SQL Server, lorsqu'un grand nombre de colonnes dans une ligne acceptent les valeurs NULL et que la plupart de ces colonnes contiennent NULL. SQL Server (comme Oracle) a une optimisation où aucun espace n'est réservé pour les colonnes contenant des valeurs NULL À LA FIN de la ligne. Un espace est réservé pour chaque colonne de la ligne, jusqu'à la dernière valeur non NULL de la ligne.
La conclusion à retenir est que si vous avez beaucoup de colonnes nullables, vous voulez les colonnes qui ne sont pas NULL le plus souvent AVANT les colonnes qui sont NULL le plus souvent.
REMARQUE :N'oubliez pas que SQL Server classe d'abord les colonnes d'une table selon que la colonne est de longueur fixe ou de longueur variable. Toutes les colonnes de longueur fixe sont stockées en premier, puis suivies de toutes les colonnes de longueur variable. Dans ces ensembles de colonnes (fixes et variables), les colonnes sont stockées dans l'ordre dans lequel elles sont définies.