Bonjour,

J'aimerai avoir votre aide pour optimiser une requête SQL.

Voici le problème dans mes logs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Query_time: 61  Lock_time: 0  Rows_sent: 30  Rows_examined: 13128
SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, u.user_points, u.user_warnings, u.user_level, u.user_gender, u.user_element , u.user_klass , u.user_race , u.user_alignment, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
        FROM phpbb_posts p, phpbb_users u, phpbb_posts_text pt
        WHERE p.forumid = 4708
    AND u.forumid = 4708
    AND pt.forumid = 4708
    AND p.topic_id = 2

                AND pt.post_id = p.post_id
                AND u.user_id = p.poster_id
        ORDER BY p.post_time ASC
        LIMIT 0, 30;

Avec la table :
phpbb_posts

Nom de la clé 	 	Type 	Cardinalité  	 	 Champ
PRIMARY 	 	PRIMARY 	622968 	 	post_id  forumid
forum_id 	 	INDEX 	 	524  	 	forum_id
topic_id 	 	INDEX 	 	103828  	topic_id
poster_id 	 	INDEX 	 	187  	 	poster_id
post_time 	 	INDEX 	 	622968  	post_time
post_id 	 	INDEX 	 	622968  	post_id

Table phpbb_users
Nom de la clé  	 	 	Type  	 	Cardinalité    	 	Champ
PRIMARY 	 	 	PRIMARY 	52860   	 user_id forumid
user_session_time 	 	INDEX 	 	52860  	 	user_session_time
user_id 	 	 	INDEX 	 	 	61  	 	user_id
forumid 	 	 	INDEX 	 	 	26430  	 	forumid

Table phpbb_post_text
 PRIMARY  	  	PRIMARY  	913565   	post_id & forumid
post_id 	 	INDEX 	 	 	913565  	post_id
forumid 	 	INDEX 	 	 	12180  	 	forumid
Ais je bien les bons index ? N'y en a t'il pas trop ?
Pourquoi cette requête est elle si longue ?

Voici ce que me retourne un explain
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 id  	 select_type  	 table  	 type  	 possible_keys  	 key  	 key_len  	 ref  	 rows  	 Extra
1 	SIMPLE 	pt 	ref 	PRIMARY,post_id,forumid 	forumid 	4 	const 	3294 	Using temporary; Using filesort
1 	SIMPLE 	p 	eq_ref 	PRIMARY,topic_id,poster_id,post_id 	PRIMARY 	7 	monforum.pt.post_id,const 	1 	Using where
1 	SIMPLE 	u 	eq_ref 	PRIMARY,user_id,forumid 	PRIMARY 	7 	monforum.p.poster_id,const 	1