J'ai ce problème sur notre serveur de production. La pile d'application est,La requête de type MySQL est extrêmement lente pour 5000 enregistrements.
- Java Web App sur Tomcat 6.0.18
- couche d'accès aux données iBatis
- base de données MySQL 5.0
- CentOS
Le système est déployé sur le serveur virtuel ayant environ 256 Mo de mémoire.
problème réel:
La requête comme,
select * from customer
exécute dans environ 10 secondes si la requête suivante est exécutée,
select * from customer where code like '%a%'
juste après l'exécution de la requête ci-dessus, la le système passe en traitement indéfini et oblige finalement Tomcat à redémarrer!
statistiques Tableau: - Nombre de disques: 5000 - Clé primaire: Code
Le même MyAdmin PHP requête exécute dans environ 4 secondes.
Pensez-vous que cela pourrait être un problème MySQL? Toute idée pour déboguer ça. Je suis en ce moment en train d'activer les journaux détaillés et je continuerai à mettre à jour cette question avec mes résultats, mais j'apprécierais vos idées de base de données.
était d'écrire l'instruction dans le texte BOLD. Peut-être que je me suis trompé de balise MarkDown. Laissez-moi réparer cela – jatanp
Je comprends. Je l'ai corrigé. – Asaph
Je ne m'attendrais pas 'select * du client où le code '% a%'' est rapide car il ne peut pas utiliser un index. Chaque enregistrement doit être vérifié. Considérez 'select * from client où code comme 'a%'' si possible car cela pourrait utilement utiliser un index. – Asaph