Optimisations mySQL

25 réponses
AuteurMessage

Bool | Olivier
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).

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
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 | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 06/04/2006 à 00:14

de rien

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

mirage | Vincent
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 | Mathieu
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 | Sam
Membre

 

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 .

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.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 7:08:28 | Généré en 6.26ms | Contacts | Mentions légales |