Bonjour,
Sur une base de dev utilisée pour de l'alimentation de cubes Olap, je cherche à vider une table.
Cette table comporte, entre autre, un champ qui me permet via une jointure de filtrer une partie de celle-ci.

Je cherche donc à supprimer dans cette table une partie des lignes ce qui sature le journal de transactions.

Quelques détails :
La base fait 25 Go avec 5Go de journaux, en mode simple.
La table contient plus de 5 millions de lignes et je cherche en supprimer 99%.
Je ne peux pas utiliser de truncate et boucler sur un nombre de ligne, pour supprimer par partie, me dérange particulièrement.
J'exécute via un package SSIS à plusieurs moments de mon alimentation sur des tables différentes.
J'ai un index cluster sur le champ utilisé pour ma jointure.
Un sp_spaceused sur la table me renvois 817 Mo de data et 5 Mo d'index.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
delete Ir.FtPv 
from Common.DimSource src
JOIN Ir.FtPv ft
	ON ft.SourceId = src.SourceId
where
	src.Code = 'S'
Utilisant un plan faisant un Clustered Index Seek sur ma table de faits, un nested loops avec la table DimSource puis il termine par un Clustered Index Delete.


J'ai pour le moment du mal à convaincre les DBA d'augmenter la taille du journal pour cette base de dev et à part faire un truncate manuel avant mon alimentation, je n'ai pas beaucoup de solution pour le moment