Bonjour,

J'ai une très grosse table MySQL 5.0.90 :
  • Id int(64) Primary Auto Increment
  • User int(64) Index
  • et des données évidement.

et je voudrais maintenir dans cette table les 100 derniers enregistrements par utilisateur, et je galère.

Voici mes pistes :
Pour ne garder qu'une vue de la table, on peut utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
DELETE test 
 FROM test
  LEFT JOIN ( SELECT Id FROM test  ...  ) Tmp
    ON test.Id = Tmp.Id
WHERE Tmp.Id IS NULL
Le problème c'est ce "...", il faudrait réussir a autoriser un nombre de doublon maximum dans l'affichage.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 SELECT Id FROM test ORDER BY Id DESC LIMIT 100
permet de garder les 100 derniers ajouts tout utilisateurs confondu. En rajoutant un GROUP BY User :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 SELECT Id FROM test  GROUP BY User ORDER BY Id DESC LIMIT 100
cela permet de garder les 100 derniers ajouts, mais un seul par utilisateur, donc je galère pour garder les x derniers ajouts correspondant aux 100 derniers par utilisateur.

Si l'un d'entre vous a une idée,
Merci d'avance