2010-07-31 7 views
0

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?

+0

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

+0

Pourcentage de la table, combien de disques supprimez-vous? – NinjaCat

+0

@gbn c'est une table de diff maintenant, l'autre table j'ai utilisé votre suggestion et cela fonctionne bien. – RPS

Répondre

0

Si vous en gardez vraiment un 1000 sur un million, avez-vous la possibilité de copier ce que vous voulez garder sur une table double (scehema identique) puis de nuke le grand et de recopier ce petit sous-ensemble? . Vous auriez besoin de mesurer le timing de cette option et de vérifier combien de temps de retard continu vous pouvez vous permettre. Une autre option consiste à déterminer une colonne qui peut servir de colonne de partitionnement - en supposant que ces millions d'enregistrements soient arrivés pendant une période plus longue, vous pouvez probablement établir des limites de temps sûres et toujours aller après une partition plus ancienne (ou des partitions), même en les détachant d'abord. Comme d'autres personnes mentionnées, vous devez ajouter plus d'informations concrètes dans la question si vous voulez que les gens réfléchissent à des scénarios plus particuliers au lieu de deviner - il n'y a pas de tactique unique pour toutes les grandes suppressions.

Questions connexes