[MySQL] 2-3 questions qui me turlupinent ... [Indexes inside]

2-3 questions qui me turlupinent ... [Indexes inside] [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 31-07-2002 à 18:19:37    

:bounce:

Reply

Marsh Posté le 31-07-2002 à 18:19:37   

Reply

Marsh Posté le 02-08-2002 à 10:04:21    

:bounce:


---------------
Anteus : "M.arc, espèce que gros fainéant qui peut valider les avatars, bouge ton gros cul". JMAulas : "Rajoute que tu n'aimes pas les petits chauves".
Reply

Marsh Posté le 02-08-2002 à 20:52:12    

Désolé je peux pas t'aider, cf. un de mes posts récents... Même pb, mon index n'est pas utilisé pour un ORDER BY tt con ! /--> G un Using filesort.


Message édité par Dost67 le 02-08-2002 à 20:52:33
Reply

Marsh Posté le 03-08-2002 à 00:03:09    

Scusez-moi, pure curiosité:
 
C'est quoi ces underscores dans le SELECT ?

Reply

Marsh Posté le 03-08-2002 à 16:31:13    

Les underscores ne sont pas dans le SELECT... Ils sont dans le die() (voir doc PHP).
 
__FILE__ est une constante prédéfinie en PHP et indique le nom du fichier courant.
__LINE__ doit certainement se définir tte seule aussi en cas d'erreur mais je la connais po celle là.

Reply

Marsh Posté le 03-08-2002 à 21:04:40    

RELAX Sky a écrit a écrit :

bsoir,
 
j'ai 2 requetes MySQL :  
 

Code :
  1. $resultat_topics=mysql_query("SELECT A.topic,A.icone,A.titre,A.posteur,A.replys,A.views
  2. ,A.dateheure,A.lastposteur,A.lastidpost,A.close,A.
  3. sondage,B.idpost,B.page,B.ispresence
  4.         FROM ".$config."_topics as A
  5.         USE INDEX (dateheure)
  6.         LEFT JOIN ".$config."_flags as B
  7.         ON (B.cat = A.cat AND B.topic = A.topic AND B.user_id = '$cookie_id')
  8.         WHERE A.cat = '$cat'
  9.         ORDER BY dateheure DESC
  10.         LIMIT $debut,$configuration_forum[nbpostspage];" )
  11.         or die("Erreur : ".__FILE__.":".__LINE__."<BR>".mysql_error())
  12. ;


 
 

Code :
  1. $resultat_topics=mysql_query("SELECT topic,icone,titre,posteur,replys,views,dateheure,lastposteur,lastidpost,close,sondage
  2.         FROM ".$config."_topics
  3.         USE INDEX (dateheure)
  4.         WHERE cat = '$cat'
  5.         ORDER BY dateheure DESC
  6.         LIMIT $debut,$configuration_forum[nbpostspage];" )
  7.         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 :D
 

  • 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 ... :heink:


  • 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 ...




Dis toi juste que si il utilisait ton index dans ton cas, ça serait encore plus lent :)
Si il l'utilise pas, c'est justement parce que c'est plus rapide sans :)

Reply

Marsh Posté le 15-08-2002 à 05:59:18    

ouais si le nombre de ligne retourné représente plus de 30% du nombre total de ligne dans ta table, il n'utilisera pas d'index (je crois que c'est ca la règle si je me rappelle bien)

Reply

Marsh Posté le 15-08-2002 à 14:04:42    

RELAX Sky a écrit a écrit :

vi c ca, relis mon post
 
mais avec le parametre USE INDEX ca a l'air de marcher
 
ceci dit, dès que je fais une jointure, hop ca marche plus:/



ouais mais ca sux de forcer mysql à utiliser un index quand il en a pas besoin.
Si il l'utilise pas c'est qu'il a de bonne raison de pas le faire :o

Reply

Marsh Posté le 16-08-2002 à 04:26:17    

RELAX Sky a écrit a écrit :

tu lis mon post , bordel ? :D (c ma premiere kestion :D)



tiens [:le kneu]


---------------
"OCPLB : On Casse Pas Le Binôme, 'moiselle Jade, Carlson & Peters, page 823 !"
Reply

Marsh Posté le 16-08-2002 à 13:18:41    

BotMan a écrit a écrit :

tiens [:le kneu]



botman!? stufais ici? [:le kneu]

Reply

Marsh Posté le 16-08-2002 à 13:18:41   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed