Evitez de coder des sous-requêtes liées dans vos applications. Elles ont un impact négatif sur
les performances de votre système en consommant beaucoup de ressources CPU.
La solution consiste à utiliser des vues en ligne (inline views), c'est-à-dire des sous-requêtes
dans la clause from de l’instruction select, disponible depuis la version 7.3.
Select e.* from EMP e
Where e.salary > ( select avg( salary) from EMP i where i.dept_id =
e.dept_id ) ; -- Mauvais
Select e.* from EMP e,
(select i.dept_id DEP, avg(i.salary) SAL from EMP I group by dept_id
) EMP_VUE
where e.dept_id = EMP_VUE.dept_id
and e.salary > EMP_VUE.SAL ; -- Bon
Partager