: un select where sur un INDEX, et mysql l'utilise pas !! [MYSQL] - SQL/NoSQL - Programmation
Marsh Posté le 24-07-2002 à 20:00:35
je sais pas pourquoi il utlise pas ton fucking index mais c'est pas une raison pour balancer des fucking jpeg
Marsh Posté le 24-07-2002 à 20:01:36
Mets un ORDER BY ton_id DESC, c'est mieux pour les LIMIT.
Est-ce que ça fonctionne sans le LIMIT ?
Marsh Posté le 24-07-2002 à 20:05:09
antp a écrit a écrit : je sais pas pourquoi il utlise pas ton fucking index mais c'est pas une raison pour balancer des fucking jpeg |
Gueule pas trop ! Pour une fois qu'un pb est exposé clairement...
Marsh Posté le 24-07-2002 à 20:07:41
RELAX Sky a écrit a écrit : le pb c'est que la table contient 1000000 enregistrements, et l'index topic (que j'ai supprimé là) fait enornément ramer la requete, elle met 5 secondes a se faire |
Koi t'as une table sans PRIMARY KEY ! Normalement avec un PRIMARY KEY sur ton id ça ne doit pas ramer le ORDER BY id DESC !!!
Marsh Posté le 24-07-2002 à 20:11:03
Dost67 a écrit a écrit : Gueule pas trop ! Pour une fois qu'un pb est exposé clairement... |
ouais mais bon le jpeg pour les screenshots ça pue
Marsh Posté le 24-07-2002 à 20:13:02
Alors là je ne comprends rien : tu parles de 1 000 000 d'enregistrements alors que dans PHPMyAdmin y'a écrit 35 760.
Or 70 000 > 35 760 ... donc faudrait être plus clair parce que je ne comprends pas.
Aussi, y'a une histoire de 30% avec les index. Si presques tous les champs cat de la table sont à 10, ça doit être normal que l'index ne soit pas utilisé.
Marsh Posté le 24-07-2002 à 20:15:15
RELAX Sky a écrit a écrit : ho recommence pas ou je te TT ! bon, update : (antp tagueule ) http://hfrskylight.free.fr/sql3.jpg http://hfrskylight.free.fr/sql4.jpg |
heu c'est qui qui peut TT l'autre ?
Marsh Posté le 24-07-2002 à 20:17:38
Fais d'abord :
Code :
|
Et dis nous si l'index est utilisé.
Marsh Posté le 24-07-2002 à 20:27:03
J'ai trouvé ça :
Citation : If the use of the index would require MySQL to access more than 30% of the rows in the table. (In this case a table scan is probably much faster, as this will require us to do much fewer seeks.) Note that if such a query uses LIMIT to only retrieve part of the rows, MySQL will use an index anyway, as it can much more quickly find the few rows to return in the result. |
http://www.mysql.com/doc/M/y/MySQL_indexes.html
Marsh Posté le 25-07-2002 à 09:32:40
tu peux tjs utiliser l'option 'USE INDEX cat' pour forcer l'utilisation de ton index.
Citation : table_name [[AS] alias] [USE INDEX (key_list)] [IGNORE INDEX (key_list)] |
Marsh Posté le 25-07-2002 à 10:12:26
Poulou a écrit a écrit : tu peux tjs utiliser l'option 'USE INDEX cat' pour forcer l'utilisation de ton index.
|
Ca se met a la fin de la requete ?
Style : SELECT .... FROM ... WHERE .... ORDER BY ... LIMIT ... USE INDEX cat ?
Marsh Posté le 25-07-2002 à 10:19:09
non :
SELECT machin FROM truc USE INDEX (nomindex) WHERE patati... |
Marsh Posté le 25-07-2002 à 10:19:49
ReplyMarsh Posté le 25-07-2002 à 10:28:20
Enfin si MySQL veut pas utiliser un index qui est créé spécialement pour la requête il faut se poser des questions ou en tout cas faire des benchs sur le select pour voir les différence entre l'index proposé par MySQL et celui qu'on veut forcer
Marsh Posté le 25-07-2002 à 10:34:23
Ca marche bien
Par contre, pour une autre requete, qui est une jointure, ca rame autant
Fo mettre un USE INDEX pour la deuxieme table aussi ?
Marsh Posté le 25-07-2002 à 10:43:27
Tout dépend de ta requête et de ta jointure.
Il faut éventuellement créer un autre index (ton cat ne convint pas forcément) et voir avec un EXPLAIN si MySQL l'utilise. Sinon tu peux encore le forcer.
Marsh Posté le 25-07-2002 à 10:49:24
Oki, je v tester
Tu peux aller la : http://81.67.52.214/E-Sky/forum1.p [...] orum&cat=1 et me dire si c rapide ?
PS : Ds cette section y a 139975 topics, et en tout, y en a 569891
Merchi bien
Marsh Posté le 25-07-2002 à 10:59:29
max > si c'est rapide pour toi, c'est rapide pour tout le monde, idem pour la lenteur.
Marsh Posté le 25-07-2002 à 11:00:16
Limit a écrit a écrit : max > si c'est rapide pour toi, c'est rapide pour tout le monde, idem pour la lenteur. |
Marsh Posté le 24-07-2002 à 20:00:06
A tt hasard essaie sans les quotes :
Mais alors c'est pas sûr du tout que le pb vient de là !