Optimisation des DELETE

Le
andre_natacha
Bonjour

J'ai une procdure de DELETE qui est trs longue car le
nombre de lignes est assez consquent. Je ne peux pas
utiliser de TRUNCATE puisque la suppression des lignes est
partielle dans la table.
Existe t il un paramtrage permettant d'utiliser le DELETE
avec une clause WHERE sans enregistrement dans le journal
des transction pour que le DELETE soit plus rapide ?

Merci de votre aide.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Xavier Pillons [MS]
Le #11724141
Je ne pense pas que cela soit possible. Une autre solution consisterai à
ajouter une colonne servant à marquer les enregistrements à supprimer, puis
à effectuer des lots de suppression.

--
Xavier Pillons
Microsoft Services


"" message news:47d001c3ff6c$87af0150$

Bonjour

J'ai une procédure de DELETE qui est très longue car le
nombre de lignes est assez conséquent. Je ne peux pas
utiliser de TRUNCATE puisque la suppression des lignes est
partielle dans la table.
Existe t il un paramétrage permettant d'utiliser le DELETE
avec une clause WHERE sans enregistrement dans le journal
des transction pour que le DELETE soit plus rapide ?

Merci de votre aide.
Michel Walsh
Le #11724121
Salut,

On ne peut pas dé-activer les écritures de journal des opérations de
INSERT, UPDATE et DELETE. Même TRUNCATE TABLE est loggué ( quoique de façon
minimale ).

Si on utilise MS SQL Server 7, ou plus ancien, enlever tous les
indexes sauf celui impliqué dans la clause WHERE, effectuer le DELETE,
recréer les indexes par après?



Vanderghast, Access MVP


"" message news:47d001c3ff6c$87af0150$

Bonjour

J'ai une procédure de DELETE qui est très longue car le
nombre de lignes est assez conséquent. Je ne peux pas
utiliser de TRUNCATE puisque la suppression des lignes est
partielle dans la table.
Existe t il un paramétrage permettant d'utiliser le DELETE
avec une clause WHERE sans enregistrement dans le journal
des transction pour que le DELETE soit plus rapide ?

Merci de votre aide.
lionelp
Le #11723841
Bonjour,

set rowcount 500
while nbligne_affectées > 0
delete table where condition

set rowcount 0

Cordialement,
LionelP

"" message news:47d001c3ff6c$87af0150$

Bonjour

J'ai une procédure de DELETE qui est très longue car le
nombre de lignes est assez conséquent. Je ne peux pas
utiliser de TRUNCATE puisque la suppression des lignes est
partielle dans la table.
Existe t il un paramétrage permettant d'utiliser le DELETE
avec une clause WHERE sans enregistrement dans le journal
des transction pour que le DELETE soit plus rapide ?

Merci de votre aide.
Publicité
Poster une réponse
Anonyme