Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1512 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°187532
The Real M​axou
Posté le 31-07-2002 à 18:19:37  profilanswer
 

:bounce:

mood
Publicité
Posté le 31-07-2002 à 18:19:37  profilanswer
 

n°188543
El Tyranno​s
Posté le 02-08-2002 à 10:04:21  profilanswer
 

: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".
n°189003
Dost67
Posté le 02-08-2002 à 20:52:12  profilanswer
 

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
n°189151
kfman
Credo quia absurdum
Posté le 03-08-2002 à 00:03:09  profilanswer
 

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

n°189324
Dost67
Posté le 03-08-2002 à 16:31:13  profilanswer
 

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

n°189399
myisamchk ​-a MYI
Destroying Angel
Posté le 03-08-2002 à 21:04:40  profilanswer
 

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 :)

n°195616
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 15-08-2002 à 05:59:18  profilanswer
 

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)

n°195679
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 15-08-2002 à 14:04:42  profilanswer
 

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

n°195883
botman
Cubeur
Posté le 16-08-2002 à 04:26:17  profilanswer
 

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 !"
n°195975
--greg--
Posté le 16-08-2002 à 13:18:41  profilanswer
 

BotMan a écrit a écrit :

tiens [:le kneu]



botman!? stufais ici? [:le kneu]

mood
Publicité
Posté le 16-08-2002 à 13:18:41  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 

Sujets relatifs
problemes avec les fonctions IMAP - [ PHP inside ]pb mysql et limitation?
conversion ACCESS 2 Mysql[PHP / MYSQL ] Comment qu on fait avec ce type de requetes ? [RESOLU]
mysql et jdbc[MySQL ] empecher d ajjouter deux fois les mm valeurs
savez vous faire ça?? (php+js+autre inside) [résolu][.NET] [MySQL] se connecter a une base mysql [INFO INSIDE]
[MySQL] comment donner l'acces a partir d'un PC distant? 
Plus de sujets relatifs à : [MySQL] 2-3 questions qui me turlupinent ... [Indexes inside]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR