SQL change le type de données de la colonne avec beaucoup de données

J'ai une table qui contient des millions d'loggings.

Je modifie un type de données de colonne en un autre (argent en décimal)

Remarquant que cela prend beaucoup de time à exécuter l'instruction alter. Probablement en raison du fait qu'il y a beaucoup de données.

Y a-t-il un moyen d'augmenter la performance pour ce scénario?

Tous les millions de lignes doivent être changés en même time en une seule transaction

Une autre option consiste à créer une nouvelle table, à l'insert par lots, à supprimer l'ancienne table et à renommer la nouvelle table. Cependant, il risque de prendre plus de time de cette façon.

Une façon consiste à créer une table temporaire avec le nouveau type de colonne, copyr datatables de la table d'origine à la température, supprimer l'original, puis renommer la température.

CREATE TABLE dbo.tmp_MyTable (ID Integer, Name varchar (100), MyChangedField decimal (8,2)) INSERT INTO dbo.tmp_MyTable SELECT * FROM dbo.MyTable DROP TABLE dbo.MyTable EXECUTE sp_rename N'dbo.tmp_MyTable', N'MyTable', 'OBJECT' 

Gardez à l'esprit, c'est un exemple trop simple. Si votre table d'origine possède des index, des keys et / ou des valeurs par défaut, vous devrez également les gérer.

Une astuce consiste à effectuer la modification dans le concepteur de table SQL Server Management Studio et à générer le script de modification pour voir tout ce qui doit être fait.

Y aurait-il un avantage de time à append la nouvelle colonne décimale à la table, la peupler de la colonne monétaire en plusieurs lots en utilisant un CAST (), et quand tout est fait, en laissant tomber la colonne monétaire?