Bonjour à tous,

J'ai un souci avec une requête qui demande beaucoup de ressources à s'exécuter.

Voici un exemple de ce que j'essaye de faire.

Admettons on a une table
- t_clients (id)
- t_commandes (id, client_id, date_validation)

Et on veut supprimer les commandes dont la date de validation est avant le 1er janvier 2015, et supprimer les clients qui n'ont pas de commande après.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
DELETE FROM t_commandes WHERE t_commandes.date_validation < '2015-01-01';
DELETE FROM t_clients WHERE NOT EXISTS (SELECT * FROM t_commandes WHERE t_commandes .client_id = t_clients.id);
La seconde requête exploite à fond le fichier de log, jusqu'à ce que l'OS manifeste qu'il n'y a bientôt plus d'espace disque et ensuite c'est SQL Serveur qui lance une erreur "impossible d'agrandir le fichier de log".

Est-ce qu'il n'y a pas moyen de contourner ce "WHERE NOT EXISTS" ? On peut utiliser des procédures, des tables temporaires etc.

Merci beaucoup par avance,

A bientôt