J'ai cette requête qui fonctionne bien sur deux tables company
et question
. Les deux tableaux sont structurés de la façon suivante:Améliorer la requête MySQL pour la performance
company | question
id | id
name | company_id
| sentiment
SELECT company.id as company_id, company.name, question.sentiment,
(SELECT count(*) FROM question
WHERE question.sentiment=0 AND question.company_id=company.id) AS count
FROM question
JOIN company ON company.id=question.company_id
WHERE question.sentiment = 0 GROUP BY company_id ORDER BY count DESC LIMIT 5
J'ai essayé de comprendre comment récrire ceci afin d'éviter la sous-requête qui semble ralentir l'exécution de la requête. Les tables de questions ont plus de 1000 enregistrements. En outre, en utilisant les index ont diminué le temps d'exécution de 545.037 à 180.228 sec, encore j'ai besoin d'améliorer cela.
Merci
Try 'expliquer étendue' et voir ce que l'optimiseur fait avec elle. Pourrait vous donner quelques indices sur la façon de procéder. – ethrbunny
Le diagnostic des requêtes lentes nécessite des définitions complètes de table et d'index, pas seulement une description ou une paraphrase. Peut-être que vos tables sont mal définies. Peut-être que les index ne sont pas créés correctement. Sans voir les définitions de table et d'index, nous ne pouvons pas le dire. –