D'abord, nous obtenons l'identifiant max de ProductFileLocalName, puis - 1000 (car nous ne voulons pas supprimer les ajouts les plus récents, car ils pourraient ne pas être inséré dans ProductFileInfo encore)Optimisation de la suppression d'un grand nombre de lignes (plus de quelques millions) - SQL Server 2005
Ensuite, nous passons l'id max à cette procédure stockée:
DELETE TOP (10000)
FROM ProductFileLocalName WITH (ROWLOCK)
FROM ProductFileLocalName
LEFT OUTER JOIN ProductFileInfo AS pfi WITH (NOLOCK) ON ProductFileLocalName.ProductFileLocalNameId = pfi.ProductFileLocalNameId
WHERE (ProductFileLocalName.ProductFileLocalNameId < @maxid AND pfi.ProductFileInfoId IS NULL);
est-ce la façon la plus efficace pour effectuer cette opération?
Pouvez-vous nous dire exactement ce que vous essayez de faire s'il vous plaît? C'est votre 3ème question sur les suppressions massives (c'était des milliards, maintenant des millions, maintenant avec TOP 10000, ...) – gbn
Pourcentage de la table, combien de disques supprimez-vous? – NinjaCat
@gbn c'est une table de diff maintenant, l'autre table j'ai utilisé votre suggestion et cela fonctionne bien. – RPS