DELETE WHERE avec près de 10.000.000 lignes...
Posté : 03 mars 2015, 20:11
Bonjour,
j'arrive pas à faire quelque chose de simple et rapide avec delete mysql, il me faut supprimer des champs qui sont supérieur ou égale à une année voulue et que le mois soit supérieur ou également à celui voulue, j'arrive à un max execution time au bout de 10mn, je n'y arrive.
Donc, pour commencer, je fait d'abord un while avec un select:
les résultats sont de forme suivante:
#31274822# idm: 1 => 3-3-2015 intervale à supprimer: 01-02-2015
#31274806# idm: 2 => 3-3-2015 intervale à supprimer: 01-02-2015
#31274827# idm: 3 => 3-3-2015 intervale à supprimer: 01-02-2015
...
on à #id# de la stats dans la base (le MAX(id))
idm: id du membre
=> date de la dernière stat
Intervale à supprimer me calcul "date de la dernière stat" - 30 jours
Je souhaite ensuite faire un delete (dans le while), comme ceci:
Merci d'avance pour votre aide
j'arrive pas à faire quelque chose de simple et rapide avec delete mysql, il me faut supprimer des champs qui sont supérieur ou égale à une année voulue et que le mois soit supérieur ou également à celui voulue, j'arrive à un max execution time au bout de 10mn, je n'y arrive.
Donc, pour commencer, je fait d'abord un while avec un select:
Code : Tout sélectionner
SELECT MAX(id) AS ids,id_membre,MAX(jour) AS jour,MAX(mois) AS mois,MAX(annee) AS annee FROM stats GROUP BY id_membre#31274822# idm: 1 => 3-3-2015 intervale à supprimer: 01-02-2015
#31274806# idm: 2 => 3-3-2015 intervale à supprimer: 01-02-2015
#31274827# idm: 3 => 3-3-2015 intervale à supprimer: 01-02-2015
...
on à #id# de la stats dans la base (le MAX(id))
idm: id du membre
=> date de la dernière stat
Intervale à supprimer me calcul "date de la dernière stat" - 30 jours
Je souhaite ensuite faire un delete (dans le while), comme ceci:
Code : Tout sélectionner
mysql_query("DELETE FROM stats WHERE id_membre=".$in['id_membre']." AND mois<=".$MoisIntervalle." AND annee<=".$AnneeIntervalle);