Bonjour à tous,
je bloque sur l'optimisation d'une requête, qui met beaucoup trop de temps à mon gout alors que je suis sur qu'avec les bons index elle pourrait être très rapide.
Voilà le principe : il s'agit d'un script open source de forums, et j'ai besoin de récupérer le sujet le plus fréquenté pour un membre donné.
Voici ma requête :
Voici les champs principaux de ma table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT t_id, COUNT(*) AS total FROM posts WHERE u_id = $id_du_membre AND f_id IN ($liste_des_forums_que_le_membre_peut_lire) GROUP BY t_id ORDER BY total DESC LIMIT 1
posts (liste des messages sur l'ensemble du forum)
-----
p_id (int) ID du message
t_id (int) ID du sujet
f_id (int) ID du forum
u_id (int) ID du membre qui a posté ce message
Initialement, j'étais partie sur l'idée d'un index que j'appel topic_per_user et qui a comme champs, dans l'ordre u_id et t_id. Cet index fonctionne parfaitement tant que je n'ajoute pas la restriction sur le champ f_id. Cependant dès que je l'ajoute, la requête redevient lente et l'index n'est plus optimisé. Comment puis je intégrer cette restriction sur le champ f_id à mon index ? Que me conseillez vous de faire pour optimiser tout ça ?
Je vous remercie !
Partager