6
votes

Est-il mauvais d'utiliser Alter Table pour redimensionner une colonne Varcharne à une taille plus grande?

J'ai besoin d'un simple redimension d'une colonne à partir de varchar (36) à varchar (40) .

Si vous essayez d'utiliser SQL Server Enterprise Manager, le script qu'il génère crée efficacement une nouvelle table avec la nouvelle structure, insérant toutes les données de la table existante, laissant tomber la table existante, renommer la nouvelle table, et recréer des index.

Si vous lisez la documentation (et de nombreuses ressources en ligne, y compris), vous pouvez utiliser une instruction alter pour le redimensionnement.

Est-ce que le alter affecte la manière dont les données sont stockées de quelque manière que ce soit? Index? Statistiques? Je veux éviter les hits de performance en raison de cette modification en raison du fait que la table peut devenir grande.


0 commentaires

4 Réponses :


5
votes

non, alter Table ( http://msdn.microsoft.com/de-de/library/ms190273.commexe ) est la façon dont Microsoft avait l'intention de faire ce genre de changement.

Et si vous n'ajoutez pas d'options supplémentaires à votre commande, aucun index ni statistiques ne doit être blessé. Une possibilité de perte de données n'est pas non plus donnée, car vous ne faites que rendre la colonne plus grande. Tout devrait aller bien.


0 commentaires

13
votes

Utilisez simplement l'alter Table. SSMS est un peu, er, stupide parfois

Vous devrez déposer et recréer les contraintes dépendantes (FK, unique, index, chèque, etc.)

Cependant, il s'agit uniquement d'une modification de métadonnées et sera très rapide pour n'importe quelle table (sauf si vous ne changez pas non plus NULL à NULL ou à VARCHAR à NVARCHAR ou telle)


5 commentaires

Cela ne va-t-il pas déplacer le champ jusqu'à la fin des rangées sur les pages? Je pensais que cela pourrait créer des pointeurs et des scissions de page.


@Jnk: nah. Aucun mouvement de données ne se passera car aucune n'est nécessaire


@Jnk C'est exactement pourquoi je posais la question, mais cela semble comme si ce n'est pas vrai.


@gbn est bien sûr correct. Avec la longueur variable, c'est son méta change, avec char il aurait d'autres effets.


@gbn, félicitations pour atteindre 100k.



2
votes

Les modifications apportées à la structure de la base de données ne doivent jamais être faites à l'aide d'un environnement SSMS sur un environnement de péril que vous avez soulevé. Il peut détruire des performances dans une grande table. Alter Table est la méthode préférée, elle est plus rapide et elle peut être stockée dans le contrôle de la source comme une modification pour pousser à pousser après le test.


2 commentaires

Vous pouvez utiliser SSMS vers Exécuter le script SQL DDL - Ne pouvez-vous pas? :-)


Oui. J'ai fait la phase qui ne va pas, vous ne devriez pas utiliser l'interface graphique pour le faire.



2
votes

Suite devrait être le meilleur moyen de gérer ce xxx


0 commentaires