Page 1 sur 1

Requète parfois "lente" parfois instantanée

Posté : 30 sept. 2019, 15:22
par Couin
Couin Couiiinnnn ! :D

Une requête tapant sur 2 tables d'un tchat, pour récupérer les infos des comptes membres : Nom du membre, date et IP d'inscription, email, et nombre de messages.
Via Javascript/AJAX, je change l'ordre des résultats suivant sur quel entête de colonne je clique.

Les 4 premières infos sont directement lisibles dans la table blabax_users , le nombre de message est compté dans la table blabax_messages :

Code : Tout sélectionner

SELECT blabax_users.id, blabax_users.name, blabax_users.email, blabax_users.ipaddr, blabax_users.timestamp, (SELECT COUNT(id)FROM blabax_messages WHERE blabax_messages.userid = blabax_users.id) AS nb_mess FROM blabax_users ORDER BY blabax_users.name ASC
Voilà, des fois les résultats s'affichent directement, des fois il faut un moment avant que ca sorte.

A priori c’est le comptage du nombre de messages de chaque membre qui est long car quand je ne mets pas cette partie ca sort tout le temps rapidement.

Je pense que je dois faire une erreur quelque par car le tchat a moins de 28000 messages, a une 50aine de membres, et une dizaine seulement ont plus de 1000 messages.

Si vous avez un tuyau :D

Merki
Couin

Re: Requète parfois "lente" parfois instantanée

Posté : 30 sept. 2019, 16:41
par Saian
Salut, pas de raison que ce soit particulièrement long du moment que tu as bien un index sur blabax_messages.userid.

Re: Requète parfois "lente" parfois instantanée

Posté : 30 sept. 2019, 22:49
par @rthur
+1, vérifie tes index
Et teste tes requêtes dans phpmyadmin pour voir si unitairement elles sont longues ou pas

Re: Requète parfois "lente" parfois instantanée

Posté : 01 oct. 2019, 13:54
par Couin
Hello,

Merci pour vos réponses.

C'était effectivement une nouvelle fois une histoire d'index.

Petite question, comment savez vous sur quelle colonne l'index doit être mis ?

Merkouin :)

Re: Requète parfois "lente" parfois instantanée

Posté : 01 oct. 2019, 15:06
par @rthur
Petite question, comment savez vous sur quelle colonne l'index doit être mis ?
Sur celui sur lequel tu fais tes jointures ou des WHERE réguliers.
Voici une page qui explique bien cela :
https://sql.sh/cours/index

Re: Requète parfois "lente" parfois instantanée

Posté : 01 oct. 2019, 15:21
par Couin
Super, merci encore une fois :)