Salut,
Je supprime plusieurs table avec de nombreuses lignes.
Cela prend un temps monstrueux. Prés de 2 heures !?
TRUNCATE ne peut pas fonctionner du fait de nombreuses FOREIGN KEY.
Comment accélérer les choses !
Merci.
Salut,
Je supprime plusieurs table avec de nombreuses lignes.
Cela prend un temps monstrueux. Prés de 2 heures !?
TRUNCATE ne peut pas fonctionner du fait de nombreuses FOREIGN KEY.
Comment accélérer les choses !
Merci.
Bonjour,
C'est une opération que tu fais au fil de l'eau ou bien une fois ponctuellement (genre purge de données) ?
Ton perimètre de suppression est simple ou il est complexe à déterminer ? Tu peux poster ta requete ?
Quelle proportion de ligne gardes tu ?
Ce qui peut ralentir ta suppression : les triggers, les indexes...
Si operation one shot, tu peux disabler les foreigns key qui pointent sur ta table, puis les triggers de cette table et ses indexes si tu es sur que tu peux te passer de ce que font les triggers éventuels.
Si la proportion de ligne a garder est faible, tu peux créer une nouvelle table ne contenant que les données à garder et recréer dessus à la fin les indexes , triggers & contraintes de ta table initiales.
Laly.
In the heart of the truly greats, perfection is never achieved but endlessly pursued.
Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)
C'est une purge. J'efface l'intégralité des données, sauf les tables d'aides.
Ce sont juste des DELETE FROM MaTable;Ton perimètre de suppression est simple ou il est complexe à déterminer ? Tu peux poster ta requete ?
Il y a de nombreuses clés étrangères.Quelle proportion de ligne gardes tu ?
Ce qui peut ralentir ta suppression : les triggers, les indexes...
Je sens que je vais tester le DROP sur les tables les plus longues..Si operation one shot, tu peux disabler les foreigns key qui pointent sur ta table, puis les triggers de cette table et ses indexes si tu es sur que tu peux te passer de ce que font les triggers éventuels.
Si la proportion de ligne a garder est faible, tu peux créer une nouvelle table ne contenant que les données à garder et recréer dessus à la fin les indexes , triggers & contraintes de ta table initiales.
Laly.
C'est parce que tu fais pas tes truncates dans le bon ordre. Tu dois d'abord vider les tables filles et ensuite les mères et là tu pourras remplacer tes DELETE par des TRUNCATE
Sauf DELETE CASCADE
Mais comme tu le fais pour le DELETE apparemment j'vois pas pourquoi tu fais pas un TRUNCATE
Erreur, pour pouvoir faire un truncate sur une table, aucune foreign key ne doit référencer cette table (pas de tables filles).
Solution :
-1- désactiver toutes les foreign key (un peu plus simple que seulement celles nécessaires)
-2- truncate de toutes les tables à purger
-3- activation de toutes les contraintes désactivées
Je ne me rappelais pas que même si les tables filles sont vides ça pose problème
En plus les scripts d'activation/désactivation des contraintes est dispo sur le site
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager