MySQL peu performant?

PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010 - 3 févr. 2009 à 22:37
PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010 - 4 févr. 2009 à 14:37
Bonjour, j'ai installé récemment MySQL sur mon ordinateur pour faire du développement de logiciel. Mon logiciel doit absolument fonctionné avec des bases MS SQL et MySQL. J'ai un GROS problème avec ce dernier. Il est incroyablement... LENT. C'est normal?

J'éxécute une requête relativement simple qui me donne 7629 résultats (la table contient 18.7 millions de rows), celle-ci prend 31 secondes à me sortir le résultat :
Select Timestamp,Data
FROM TLData
Where TLInstance = 17
AND Type = 0
AND Timestamp between '2008-10-01' AND '2008-11-01'
ORDER BY Data DESC
LIMIT 1 *** Avec ou sans, c'est toujours 30 à 31 secondes secondes

Étrangement, la même requête sur une base de données MSDE2000 (la version gratuite), s'exécute en.... 0,127 secondes! (Soit 247 fois plus rapide)

Je tiens à préciser que les deux bases de données (MSDE2000 et MYSQL) contiennent EXACTEMENT les mêmes données.

Est-ce que je fais quelque chose de pas correcte ou MySQL est vraiment pas bon de ce côté?

4 réponses

PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010
3 févr. 2009 à 22:43
J'oubliais de précisé ceci, si ca peut aider
J'utilise MySQL version 5.1 (dernière disponible sur le site)
Je fais mon query directement dans le "Query browser" (mon application semble prendre à peu près le même temps pour afficher les données)

Mon PC de bureau sur lequel je fais des tests :
Windows XP SP3
Pentium 4HT 3ghz (dual core)
1,5GO de ram
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 23:30
Salut,

Pense a mettre des index sur la clé primaire
SQL server le fait par défaut (mysql?)

index
TLInstance
et
Type
voir le champ de date




il est conseillé d'indexer les champs du WHERE

mais attention a ne pas en mettre trop d'index

Les types de tes colonnes sont ils bien positionnés.

SQL server a un cache de requete
mysql surement aussi

apres il y a un qui optimise mieux que l'autre apparament.

Plus d'infos sur
http://dev.mysql.com/doc/refman/5.0/fr/mysql-indexes.html
http://dev.mysql.com/doc/refman/5.0/fr/mysql-optimization.html

Bonne recherche et bon SQL

Si tu as une solution n'hésite pas à compléter le post.
0
PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010
4 févr. 2009 à 13:52
En fait la base de donnée présente est créé et remplie par un autre logiciel que je ne peux pas modifier

Quand je met un index, il coche "Not null" automatiquement, alors que dépendant du type de données (quand Type = 3) la case timestamp est vide.
0
PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010
4 févr. 2009 à 14:37
Voilà, je crois avoir trouvé. J'avais installé MySQL en mode "Développeur" lors de la configuration de base du serveur. Je l'ai relancé, cette fois en choisissant le mode serveur, et le temps de réponse pour la requête passe de 31 secondes à 0,5 sec. (C'est toujours pas MS SQL (MSDE2000) avec 0,17 secondes, mais c'est déjà mieux!)

Je suppose que je pourrais gagné un peu plus en jouant avec d'autres réglages, mais au moins c'est utilisable maintenant.
0