Optimisations mySQL

25 réponses
AuteurMessage

Bool
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 05/04/2006 à 23:36

Si les multiples correspondent à toutes tes requetes, il n'y a aucune raison de s'en priver, bien au contraire...
Et s'ils sont dans le "bon ordre", MySQL peut aussi se servir d'une partie de l'index (les premiers champs).

Google is watching you.

Zalex14
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 05/04/2006 à 23:53

Bool a dit :
Si les multiples correspondent à toutes tes requetes, il n'y a aucune raison de s'en priver, bien au contraire...

Bah justement y'a pas mal de requetes différentes et c'est quasi impossible d'avoir un index multiple qui correspond à tout.

Par contre Bool : MERCI !
Je viens de mettre en application ton systeme de position plutot qu'utiliser Order by et Mysql adore, et moi aussi

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Bool
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 06/04/2006 à 00:14

de rien

Google is watching you.

mirage
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 06/12/2008 à 21:14

Déterrage de super vieux topic mais vu que le sujet est le même, inutile d'en créer un nouveau.

C'est toujours pour un forum, c'est toujours pour une question de performances.

La requête est la suivante :

SELECT forum_topic.ID, forum_topic.TITLE, forum_topic.IS_STICKED, forum_topic.IS_LOCKED, forum_topic.FORUM_CATEGORY_ID, forum_topic.FORUM_POST_ID, forum_topic.CREATED_AT, forum_topic.UPDATED_AT, forum_topic.USER_ID, forum_topic.NB_POSTS, forum_category.ID, forum_category.NAME, forum_category.SLUG, forum_category.RANK, forum_category.FORUM_GROUP_ID, forum_category.FORUM_TOPIC_ID, forum_category.NB_POSTS, forum_category.NB_TOPICS, forum_category.SF_GUARD_GROUP_ID, forum_category.CAN_CREATE_TOPIC
FROM forum_topic, forum_category
WHERE forum_category.SF_GUARD_GROUP_ID =1
AND forum_topic.FORUM_CATEGORY_ID = forum_category.ID
ORDER BY forum_topic.CREATED_AT DESC
LIMIT 5


Un petit explain :

+----+-------------+----------------+------+-----------------------------+---------------------+---------+--------------------------------+------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+------+-----------------------------+---------------------+---------+--------------------------------+------+---------------------------------+
| 1 | SIMPLE | forum_category | ref | PRIMARY,forum_category_FI_3 | forum_category_FI_3 | 4 | const | 6 | Using temporary; Using filesort |
| 1 | SIMPLE | forum_topic | ref | forum_topic_FI_1,selection | forum_topic_FI_1 | 5 | ***.forum_category.id | 137 | Using where |
+----+-------------+----------------+------+-----------------------------+---------------------+---------+--------------------------------+------+---------------------------------+


Le coup du "using temporary" et "using filesort" me gêne un peu. La requête met environ 30ms à s'exécuter. Sur quel champ je pourrais ajouter des index dans "forum_category" pour aider mySQL à faire un peu mieux ?

Actuellement j'ai :
forum_category_FI_1 > forum_group_id
forum_category_FI_2 > forum_topic_id
forum_category_FI_3 > sf_guard_group_id
forum_category_FI_4 > can_create_topic

Merci

MathieuC
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 06/12/2008 à 23:48

Lis la doc, reflechi 5 minutes, ou laisse un cheque de 100 euros

Sérieux, c'est le cas le plus simple d'optimisation avec des index, en 5 minute tu lis la doc et tu as ta reponse comme un grand.

petitnuage
Membre

Photo de petitnuage

Inscrit le : 20/11/2008

# Le 07/12/2008 à 14:17

Ca ne t'apprendra sans doute pas énormément de choses, mais ça permet de revoir les bases en matière d'optimisation MySQL : How to Kill MySQL PerformanceOuvrir dans une nouvelle fenetre .

Petit Nuage est une société de services webOuvrir dans une nouvelle fenetre dirigée par Martin KorolczukOuvrir dans une nouvelle fenetre , apprenti webmasterOuvrir dans une nouvelle fenetre .

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.