Comment optimiser un insert en masse à partir d'une table volumineuse
bonjour à tous ,
j'ai une table "table_src" avec des index qui fait + 40 millions de lignes et je dois modifier la structure de la table en ajoutant des colonnes.
j'ai de gros problèmes de performance ça met 4 heures et ça plante car je rencontre des problèmes d'espace disque avec la base tempdb
version sql = sql server 2008 R2 , la mémoire allouée à sql est de 2 Go et il reste 20 Go sur le serveur
voici ce que j'ai fait :
- la base est en mode simple
- j'ai créé une nouvelle table table_dest avec la nouvelle structure avec la clé primaire
SET NOCOUNT ON
insert into dbo.table_dest (...) select .... from dbo.table_src
- après l'insert j'ai créé les index sur la table table_dest.
je ne sais pas si par exemple il est préférable de créer les index sur la table finale avant ou après l'insert
j'aurai voulu faire un test en faisant des insertions par bloc pour maîtriser la taille de la base tempdb mais je ne sais pas comment faire.
au final je ne sais pas trop comment m'y prendre , à part sinon de demander à l'infra d'augmenter la mémoire et l'espace disque du serveur mais ça va prendre des semaines.
merci d'avance pour aide