Optimisation d'index pour une requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Optimisation d'index pour une requête

par Sékiltoyai » 21 déc. 2008, 23:36

Si tu ajoutes un index f_id, ca change quelquechose ?
Sinon, un index u_id,f_id,t_id ?

Optimisation d'index pour une requête

par Genova » 21 déc. 2008, 16:50

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 :

Code : Tout sélectionner

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
Voici les champs principaux de ma table :

Code : Tout sélectionner

CREATE TABLE `fsb2_posts` ( `p_id` int(11) NOT NULL auto_increment, `f_id` mediumint(9) NOT NULL default '0', `t_id` int(11) NOT NULL default '0', `u_id` int(11) NOT NULL default '0' )

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 !