RELAX Sky a écrit a écrit :
bsoir,
j'ai 2 requetes MySQL :
Code :
- $resultat_topics=mysql_query("SELECT A.topic,A.icone,A.titre,A.posteur,A.replys,A.views
- ,A.dateheure,A.lastposteur,A.lastidpost,A.close,A.
- sondage,B.idpost,B.page,B.ispresence
- FROM ".$config."_topics as A
- USE INDEX (dateheure)
- LEFT JOIN ".$config."_flags as B
- ON (B.cat = A.cat AND B.topic = A.topic AND B.user_id = '$cookie_id')
- WHERE A.cat = '$cat'
- ORDER BY dateheure DESC
- LIMIT $debut,$configuration_forum[nbpostspage];" )
- or die("Erreur : ".__FILE__.":".__LINE__."<BR>".mysql_error())
- ;
|
Code :
- $resultat_topics=mysql_query("SELECT topic,icone,titre,posteur,replys,views,dateheure,lastposteur,lastidpost,close,sondage
- FROM ".$config."_topics
- USE INDEX (dateheure)
- WHERE cat = '$cat'
- ORDER BY dateheure DESC
- LIMIT $debut,$configuration_forum[nbpostspage];" )
- or die("Erreur : ".__FILE__.":".__LINE__."<BR>".mysql_error());
|
La premiere requete s'execute correctement, mais elle est lente.
la deuxieme requete s'execute tres rapidement (c'est mon but) grace à USE INDEX
en effet, je suis obligé d'utiliser use index, car pour mes test perso, le champ cat est rempli à 95% de '10'
Donc les 30% sont deja bien dépassés
- Premiere question : Est ce que forcer l'utilisation de l'index augmente le proc du serveur ? car bien que cela soit super, je doute sur la puissance requise ...
- Deuxieme question : Pourquoi le USE INDEX dans la deuxieme requete n'est pas interprété ? voici le resultat d'un explain :
http://hfrskylight.free.fr/explain.jpg
Or j'ai beau utiliser tous les alias possible (A.dateheure, forum_topics.dateheure), mysql ne veut rien savoir et se juge utile de ne pas utiliser dateheure ... pourtant bien pratique.
donc ma requete se tape constamment du demi seconde d'execution, et avec des données contenant 100000 lignes, cela depasse 5secondes, impensable.
Si vous avez des avis ...
|