Both queries generates a list of department IDs along with the number
of employees assigned to each department.
Je suis en mesure d'obtenir des résultats pour les deux ci-dessus en utilisant des jointures et des sous-requête, mais je suis très curieux de savoir comment les deux requêtes fonctionne en termes de performance
ce qui est mieux: les jointures ou sous-requête. J'ai ajouté la capture d'écran Explain Plan pour les deux requêtes, mais je ne comprends pas ce que cela signifie.Performances entre la sous-requête et la jointure?
Rejoignez l'aide
SELECT d.dept_id, d.name, count(emp_id) AS num_employee
FROM department d INNER JOIN employee e ON e.dept_id = d.dept_id
GROUP BY dept_id;
L'utilisation des sous-requêtes
SELECT d.dept_id, d.name, e_cnt.how_many num_employees
FROM department d INNER JOIN
(SELECT dept_id, COUNT(*) how_many
FROM employee
GROUP BY dept_id) e_cnt
ON d.dept_id = e_cnt.dept_id;
avez-vous testé la performance? – rabudde
En règle générale - une jointure est presque toujours meilleure en termes de performance – Galz
voir aussi http://dev.mysql.com/doc/refman/5.1/fr/explain-output.html (pour l'explication de 'type' colonne) – rabudde