Optimisation recherche doublons

Optimisation recherche doublons - SQL/NoSQL - Programmation

Marsh Posté le 30-09-2013 à 21:08:10    

Bonjour,
 
J'ai un problème pour regler une requête somme toute assez simple ;-)
 
J'arrive à avoir précisément ce que je veux mais ma requête prend beaucoup trop de temps (~45s)
 
Je pars d'une table comprenant 40000 lignes et 70 champs (varchar, date, int, enum)
 
Ma méthode est bourrine mais c'est la seule façon dont j'ai pu avoir mes lignes doublons (les deux)
Y a-t-il moyen d'optimiser le machin ?
 
CREATE TEMPORARY TABLE doublontmp /*table regroupant toutes les entrées du fichier table1 ayant le couple e_nom,e_ddn identiques*/
SELECT e_num, COUNT(*), e_nom, e_ddn  
FROM table  
GROUP BY e_nom, e_ddn HAVING COUNT(*) > 1;
 
CREATE TEMPORARY TABLE doublontable1 /*table qui contient les doublons e_num de la table doublontmp*/
SELECT table1.e_num, table1.e_nom, table1.e_ddn  
FROM  table1,doublontmp
WHERE table1.e_nom=doublontmp.e_nom
 AND table1.e_ddn=doublontmp.e_ddn
 AND table1.e_num<>doublontmp.e_num;
 
SELECT *  /*requete qui ordonne et affiche tous les e_num differents et les exporte dans un csv */
FROM table1, doublontable1
WHERE doublontable1.e_nom=table1.e_nom
 AND doublontable1.e_ddn=table1.e_ddn
GROUP BY table1.e_num
INTO OUTFILE 'doublons.csv' FIELDS TERMINATED BY ';';
 
Merci !

Reply

Marsh Posté le 30-09-2013 à 21:08:10   

Reply

Marsh Posté le 01-10-2013 à 07:40:29    

Le Select ne devrait jamais prendre 45s.
Tu as un index sur les champs e_nom et e_ddn sur les deux tables?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed