Gros problème de lenteur inexplicable :( - SQL/NoSQL - Programmation
Marsh Posté le 25-07-2003 à 21:56:09
Ca me parait assez normal, en fait. Vu que tu as un order by et un limit 19000, 30, il est obligé de trier casiment toute la table pour te renvoyer les derniers ...
A la limite, tu pourrai faire order asc et limit 1000, 30 a priori meme résultat mais plus rapide.
Marsh Posté le 26-07-2003 à 11:00:50
Arf donc ca parait normal
Je vais essayer la technique du ASC
Marsh Posté le 25-07-2003 à 19:23:32
Bonjour à tous
Je suis actuellement en train de programmer mon forum en PHP/MySQL, et je me heurte a un petit probleme
Je m'explique :
J'ai une table qui contient juste 20 000 enregistrements ; voici ma requete >
SELECT id, icone, titre, auteur, reponse, vue, dernier_auteur, dernier_date, dernier_id_topic, ferme
FROM nono_topic_cat1
ORDER BY dernier_date DESC
LIMIT 19000,30
J'ai bien sur une clé PRIMARY sur l'ID du topic, et aussi un INDEX sur le champ DERNIER_DATE
Malgré cela, le temps de génération s'eleve a 0.9s !
Quand j'effectue un LIMIT 0, 30, la, c'est nikel, je fais du 0.004s.
Mais pour le limit 19000, 30, je trouve ca hallucinant
Pourtant j'ai bien l'impression d'avoir mis les bons indexes, mais rien n'y fait
J'ai donc fait un EXPLAIN, et j'obtiens :
TABLE : nono_topic_cat1
TYPE : index
POSSIBLE KEYS : NULL
KEY : dernier_date
KEY_LEN : 8
REF : NULL
ROWS : 21032
EXTRA :
Ce que j'en déduis, c'est qu'il scanne juste l'arbre des index, mais en entier (Il scanne les 21000 enregistrements).
Si j'enleve mon index sur le champ DERNIER_DATE, j'obtiens exactement les memes temps de generation !
Vraiment, la, je ne comprends plus
Si quelqu'un pouvait m'aider, ce serai vraiment cool
PS : Le probleme vient du ORDER BY, si je l'enleve, j'obtiens un temps dans les 0.03s.
PPS : J'ai essayé de changé le ORDER BY dernier_date DESC par ORDER BY dernier_id_topic DESC, c'est tjs pareil.
Merci a tous
---------------
Envie d'un bol d'air ? Traxxas Revo 3.3