Em cenários de Engenharia de Dados, consultas SQL complexas podem apresentar problemas de desempenho quando realizam múltiplas subconsultas, filtros repetidos e operações desnecessárias sobre grandes volumes de dados.
-- Consulta pesada
SELECT
c.id_cliente,
c.nome,
(
SELECT SUM(v.valor)
FROM vendas v
WHERE v.id_cliente = c.id_cliente
AND v.status = 'APROVADA'
) AS total_vendas,
(
SELECT COUNT(*)
FROM vendas v
WHERE v.id_cliente = c.id_cliente
AND v.status = 'APROVADA'
) AS quantidade_vendas
FROM clientes c
WHERE c.ativo = 1;
-- Consulta otimizada com CTE
WITH vendas_agrupadas AS (
SELECT
id_cliente,
SUM(valor) AS total_vendas,
COUNT(*) AS quantidade_vendas
FROM vendas
WHERE status = 'APROVADA'
GROUP BY id_cliente
)
SELECT
c.id_cliente,
c.nome,
COALESCE(v.total_vendas, 0) AS total_vendas,
COALESCE(v.quantidade_vendas, 0) AS quantidade_vendas
FROM clientes c
LEFT JOIN vendas_agrupadas v
ON v.id_cliente = c.id_cliente
WHERE c.ativo = 1;