Réponse courte: Je suis d'accord avec OMG Ponies, l'ordre des colonnes n'a pas d'importance. Si vous n'avez pas d'index clusterisé, supprimez plutôt et recréer la table plutôt que d'exécuter un ALTER TABLE x ADD col.
Réponse longue: Si votre table a un peu juste des données (50Mo vient à l'esprit), alors vous serez mieux recréer la table plutôt que ALTER TABLE x ADD col Le plan d'allocation de pages de données pour la SQL Server place généralement les données de votre nouvelle colonne dans des pages séparées et met en avant les pointeurs de vos pages de données existantes vers les nouvelles pages de données pour la colonne que vous avez ajoutée. Si vous allez utiliser la nouvelle colonne de façon extensive, votre table d'E/S sera très médiocre, car même lire 1 ligne nécessitera de lire au moins 2 pages. Les analyses de table sont également peu performantes, car les pointeurs vers l'avant sont toujours suivis, ce qui entraîne des balayages de table normalement séquentiels pour faire des va-et-vient sur votre disque pendant une lecture.
Dans ce cas, il est préférable de renommer la table existante, recréer votre table avec la nouvelle colonne, insérer dans nom_table sélectionner col1, col2, 'null ou défaut pour nouvelle col', col3 de temp_renamed_table et enfin abandonner l'ancienne table vous avez renommé Les pages de données seront bien mieux organisées et vos E/S seront plus rapides, même si elles ont la même apparence du point de vue du développeur SQL que lorsque ALTER TABLE est utilisé. Si vous avez un index clusterisé, la table sera réorganisée lorsque vous ajouterez la colonne et les divisions de page seront moins probables. Vous pouvez également exécuter ALTER TABLE x REBUILD si vous avez SQL Server 2008, n'avez pas d'index clusterisé et beaucoup de temps lorsque les utilisateurs n'utilisent pas votre table. Il est difficile de commenter votre stratégie d'indexation sans en savoir beaucoup plus.
C'est une bien meilleure raison pour recréer la table que quelque chose de cosmétique comme l'ordre des colonnes.
Sir Wobin, c'est la première fois que j'ai entendu dire que de "nouvelles colonnes" seront ajoutées de cette façon. Pouvez-vous poster quelques références en ligne qui en parlent? (Cela semble raisonnable, je veux juste obtenir beaucoup plus de profondeur et de détails sur le sujet, et je ne suis pas sûr de savoir comment Google le sujet.) –
J'aime Philip aimerait voir tous les documents que vous avez sur ce sujet ... serait vraiment utile. – scarpacci
Les concepts que vous recherchez sont des "séparations de page" et des "pointeurs de transfert". Voici 2 excellentes discussions avec des techniques pour les trouver sur vos tables, y compris des expériences pour déterminer quand elles se produisent. http://bit.ly/bIrQvp et http://bit.ly/df3Mp0 Voici une référence spécifique aux découpages de page résultant de l'ajout d'une colonne à une table existante. http://bit.ly/dAxPs0 –