Comment insert des données d'une table à une autre dans une boucle en considérant la performance?

J'ai besoin d'insert des données d'une table à l'autre dans une boucle avec 10k lignes dans chaque boucle.

Je veux essayer ceci parce que mon insert into ***() select () from ### prend tellement de time que la table source a des millions d'loggings.

Y aura-t-il une amélioration de la performance en utilisant cette approche?

Vous pouvez essayer d'insert dans les lots et voir s'il y a une amélioration des performances. Voici l exemple de code:

 DECLARE @Count INT DECLARE @Start INT SET @Start = 1 SELECT @Count = COUNT(*) FROM TableName1 WHILE @Start<=@Count BEGIN WITH cte AS ( SELECT Col1, Col2, Col3,ROW_NUMBER() OVER (ORDER BY Col1) AS 'RowNum' FROM TableName1 ) INSERT INTO TableName2 SELECT Col1, Col2, Col3 FROM cte WHERE RowNum >= @Start AND RowNum < @Start+10000 SET @Start += 10000 WAITFOR DELAY '00:00:10' END 

Ici 10000 est la taille du lot et vous pouvez changer cette valeur selon votre convenance.