Melhores Práticas ao Utilizar Subqueries no Oracle SQL
Subqueries, ou sub-consultas, são consultas SQL aninhadas dentro de outra consulta SQL. Embora sejam ferramentas poderosas que proporcionam grande flexibilidade, é crucial utilizá-las de maneira eficaz e eficiente. Neste artigo, abordaremos as melhores práticas ao usar subqueries no Oracle SQL, acompanhadas de exemplos práticos e seus resultados esperados.
Prefira Subqueries Correlacionadas quando Apropriado
Uma subquery correlacionada é uma subquery que usa valores da consulta externa. Ela é executada uma vez para cada linha processada pela consulta externa.
Exemplo
SELECT e.first_name, e.last_name
FROM employees e
WHERE e.salary > (
SELECT AVG(s.salary)
FROM salaries s
WHERE s.department_id = e.department_id
);
Resultado
first_name last_name
------------ -----------
John Doe
... ...
Use EXISTS e NOT EXISTS com Sabedoria
Quando se verifica a existência de registros correspondentes, EXISTS
e NOT EXISTS
são geralmente mais eficientes do que outras abordagens, pois a execução para no primeiro match encontrado.
Exemplo
SELECT department_name
FROM departments d
WHERE EXISTS (
SELECT 1
FROM employees e
WHERE e.department_id = d.department_id
AND e.salary > 5000
);
Resultado
department_name
----------------------
Sales
...
Evite SELECT * em Subqueries
Selecionar todas as colunas geralmente traz mais dados do que o necessário, o que pode afetar o desempenho.
Não recomendado
SELECT *
FROM (
SELECT * FROM employees
) WHERE salary > 5000;
Recomendado
SELECT first_name, last_name, salary
FROM (
SELECT first_name, last_name, salary FROM employees
) WHERE salary > 5000;
Considere o Uso de Common Table Expressions (CTEs) para Melhor Clareza
CTEs podem tornar suas subqueries mais legíveis, especialmente quando lidando com consultas complexas.
Exemplo
WITH HighEarners AS (
SELECT first_name, last_name
FROM employees
WHERE salary > 5000
)
SELECT * FROM HighEarners;
Resultado
first_name last_name
------------- ------------
Jane Smith
... ...
Conclusão
Subqueries são ferramentas essenciais no arsenal de um desenvolvedor Oracle SQL. Elas oferecem flexibilidade e potência, mas é crucial que sejam utilizadas de forma otimizada. Seguindo as melhores práticas discutidas acima, você pode garantir consultas mais eficientes e legíveis.
Referências: