Executando verificação de segurança...
3

O que fiz para aprender e criar consultas complexas e gigantescas usando sql

Estou a trabalhar numa aplicação web há 2 meses, o que me obrigou a melhorar os meus conhecimentos em sql. Foi preciso alguma dedicação para obter resultados mais ou menos consideráveis, por isso aqui ficam algumas dicas para quem quer construir consultas mais complexas e eficientes.

  1. Dominar o básico: Antes de se aventurar em consultas complexas, certifique-se de que tem um bom conhecimento das noções básicas de SQL, como SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY, HAVING e WHERE.

  2. Entenda os diferentes tipos de junções: As junções são a espinha dorsal de consultas complexas. Domine os diferentes tipos:

  • INNER JOIN: Combina registos comuns entre duas tabelas.
    LEFT JOIN (ou LEFT OUTER JOIN): Devolve todos os registos da tabela da esquerda, mesmo que não haja correspondência na tabela da direita.
  • RIGHT JOIN: Semelhante ao LEFT JOIN, mas devolve todos os registos da tabela da direita.
  • FULL JOIN: Devolve registos quando existe uma correspondência numa das tabelas.
  1. Utilizar subconsultas e CTEs (Common Table Expressions):
  • Subconsultas: São consultas dentro de consultas. Podem ser utilizadas para dividir grandes problemas em partes mais pequenas.
SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
  • CTEs: Proporcionam uma forma mais legível e reutilizável de estruturar consultas complexas. São definidos com WITH.
WITH HighEarners AS (
    SELECT name, salary FROM employees WHERE salary > 5000
)
SELECT * FROM HighEarners;
  1. Utilizar agregações de forma inteligente: Utilize funções como SUM(), AVG(), COUNT(), MIN(), MAX() combinadas com GROUP BY para resumir dados de grandes volumes de registos.
SELECT department, COUNT(employee_id), AVG(salary)
FROM employees
GROUP BY department;
  1. Aprender a otimizar as consultas:
  • Utilizar índices: A indexação de colunas frequentemente utilizadas em WHERE e JOIN pode melhorar o desempenho.
  • Examine o plano de execução: Use o comando EXPLAIN para ver como o banco de dados processa suas consultas e identificar gargalos.
EXPLAIN SELECT * FROM employees WHERE salary > 5000;

Comece sempre por coisas pequenas e vai pegando a pratica.

Carregando publicação patrocinada...
2
2
2

Prefiro CTE do que subquerys, pois na maioria dos casos torna a consulta mais rápida. Outra dica para subquerys como nonseu exemplo, optar por criar uma tabela temporária e depois usar o inner join será muito melhor.

Parabéns pela explicações, trabalhar performance em SQL não é uma receita única, mas ja deu pra ajudar muita gente