advanced
Otimização de Consulta SQL com Subqueries Complexas
Otimize uma instrução SQL lenta envolvendo múltiplas junções, subconsultas e agregações.
📝 Contenu du Prompt
Você recebeu o seguinte esquema de banco de dados relacional para um sistema de e-commerce: tabelas 'Clientes' (id, nome, cidade_id), 'Pedidos' (id, cliente_id, data, total), 'ItensPedido' (pedido_id, produto_id, quantidade, preco_unitario) e 'Produtos' (id, nome, categoria). A consulta atual abaixo, que visa encontrar os top 10 clientes que mais gastaram em uma categoria específica no último ano, está apresentando tempo de execução excessivo. Escreva uma versão otimizada desta consulta, explique quais índices seriam necessários para garantir a performance e justifique as alterações feitas na lógica de acesso aos dados. Consulta original: SELECT c.nome, SUM(ip.quantidade * ip.preco_unitario) AS total_gasto FROM Clientes c JOIN Pedidos p ON c.id = p.cliente_id JOIN ItensPedido ip ON p.id = ip.pedido_id JOIN Produtos prod ON ip.produto_id = prod.id WHERE prod.categoria = 'Eletrônicos' AND p.data >= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY c.id ORDER BY total_gasto DESC LIMIT 10;