Voltar para a lista de artigos Artigos
7 minutos de leitura

Como organizar as consultas SQL quando elas se tornam longas

A primeira longa consulta SQL com a qual você terá que lidar provavelmente será difícil para você estruturar e entender. Estas cinco dicas lhe ensinarão a melhor maneira de organizar as consultas SQL, ou seja, escrevê-las e formatá-las.

Como todos sabemos, as consultas SQL são essenciais para o gerenciamento do banco de dados. Sem elas, seria extremamente difícil encontrar e trabalhar com as informações em um banco de dados.

A duração das consultas depende do tipo de informação que precisamos e do tamanho do banco de dados. Quando lemos uma simples peça de código SQL, geralmente somos capazes de compreendê-la com bastante facilidade. Mas e se estivermos lidando com uma consulta de 1.500 linhas? Se quisermos entender o que fizemos (ou deixar que outros entendam), temos que saber como organizar as consultas SQL. Felizmente, lembrar apenas cinco dicas úteis ajudará você a lidar com cada consulta SQL longa que você escreverá. .

Como Organizar Consultas SQL

Dica 1: Indique seu código

A indicação ajuda a manter sua longa consulta SQL limpa, identificando onde começa cada bloco de código. Isto torna a estrutura do programa mais compreensível e permite que os desenvolvedores encontrem facilmente uma instrução específica. Ao recuar corretamente seu código, você pode ver rapidamente o que está selecionando, quais tabelas fornecem os dados e quais restrições se aplicam a eles (ou seja, as cláusulas WHERE e GROUP BY ).

Vamos ver um exemplo de consulta SQL relativamente longo:

SELECT column1
       ,column2
FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3
    ON table2.column1 = table3.column1
)

Compare o código acima com este exemplo:

SELECT column1, column2 FROM table1 WHERE column3 IN ( SELECT TOP(1) column4 FROM table2 INNER JOIN table3 ON table2.column1 = table3.column1)

Agora, imagine que existem 100 instruções semelhantes, também. Sem indentação, um exemplo de consulta SQL tão longo será muito difícil de ler e entender!

Não há um único estilo de indentação aceito. Cada empresa ou programador geralmente desenvolve seu próprio estilo. Mesmo assim, seu estilo de indentação deve fazer sentido para os outros. Para ajudá-lo a começar, eu forneci links para guias de estilo da ApexSQL e Simon Holywell.

A indentação é a primeira coisa que você deve fazer quando começar a escrever código. Se você herdar um pedaço de código não-indentado, há muitos sites que lhe permitem formatar sua longa consulta SQL gratuitamente.

Dica 2: Use a cláusula WITH

A cláusula WITH permite nomear um bloco de subconsulta e tratá-lo como uma tabela normal. Neste caso, a cláusula WITH é basicamente um substituto para uma subconsulta normal.

Veja o longo exemplo de consulta SQL abaixo. Sua tarefa é mostrar o número de hospitais em Los Angeles onde pacientes cuja última visita foi há mais de 14 dias receberam uma dose média de medicamentos acima de 1.000 unidades.

WITH patient_data AS (
	SELECT patient_id, patient_name, hospital, drug_dosage
	FROM hospital_registry
	WHERE (last_visit > now() - interval '14 days' OR last_visit IS NULL) 
	AND city = "Los Angeles"
)

WITH average_dosage AS (
	SELECT hospital, AVG(drug_dosage) AS Average
	FROM patient_data
	GROUP BY hospital
)

SELECT count(hospital) 
FROM average_dosage;
WHERE AVG(drug_dosage) > 1000

Explicarei todos os elementos desta consulta.

O primeiro elemento é a cláusula WITH. Usando-a, podemos especificar duas subconsultas como patient_data e average_dosage e usá-las como tabelas normais. A subconsulta patient_data foi usada para criar a subconsulta average_dosage. Assim, average_dosage torna-se a fonte de dados final da declaração SELECT.

Este arranjo é muito mais limpo do que escrever tudo em uma única consulta e colocar todas as subconsultas nas instruções do WHERE.

Como torna o código mais fácil de ler, a cláusula WITH é sem dúvida a melhor maneira de organizar consultas SQL.

Dica 3: Explique você mesmo com comentários

O código diz como, mas os comentários explicam o porquê. Os comentários são alguns dos recursos úteis mais importantes em qualquer código, desde um projeto de programação em Java até uma consulta SQL. Eles permitem que os programadores expressem seus processos de pensamento e seus resultados desejados.

Sempre adicione comentários ao seu código. Você ficará feliz em fazê-lo, assim como qualquer outro programador que trabalhe em seu SQL. Mesmo que você esteja apenas fazendo uma pausa, adicione comentários - eles o ajudarão a retomar de onde você parou.

Isto é o que parece uma consulta SQL muito simples sem comentários:

SELECT name, 
      student_group,
FROM course_marks
WHERE points < 300 OR points IS NULL;

Você realmente sabe exatamente o que o WHERE significa? Sem comentários, é difícil entender o que o codificador queria realizar.

Se você se pergunta como organizar melhor as consultas SQL, torne um hábito deixar comentários em seu código. Vamos ver esta mesma longa consulta SQL, mas com comentários e explicações:

/*Get the list of every student 
who failed or was absent on exam*/

SELECT name, 
      student_group,
FROM course_marks
WHERE points < 300 OR points IS NULL; --student fails when gets 300 or less points.
--When student was absent, instead of points there is NULL in column

Melhor, não é? Estes comentários têm explicado as ações do desenvolvedor e nos ajudado a entender o que a consulta faz.

Dica 4: Quebre as consultas em etapas

Uma longa consulta SQL é realmente uma coleção de blocos de código, que são muito mais fáceis de controlar e de verificar se há erros. Construir sua consulta um passo de cada vez é uma melhor prática para o desenvolvimento de SQL. Isto permitirá que você encontre erros lógicos mais rapidamente e esteja mais confiante em seus resultados.

Veja como é muito mais fácil entender este longo exemplo de consulta SQL porque ele foi quebrado em etapas lógicas:

WITH subject AS (
 SELECT 
 student_id, 
 subject_id,
 school_id,
 sum(exam_score) AS total_score 
 FROM subject_marks 
 GROUP BY student_id, subject_id, school_id
), 

student AS (
 SELECT 
 student_id,
 school_id,
 avg(total_score) AS average_student 
 FROM subject
 GROUP BY student_id, school_id
)

SELECT 
school_id, 
 avg(average_student) 
FROM student 
GROUP BY school_id;

Queremos que o resultado desta consulta nos mostre a quantidade média de pontos para cada aluno de cada escola. A primeira etapa (a cláusula WITH subject ) encontra a soma de pontos para cada disciplina. A segunda etapa (a cláusula WITH student ) calcula a média de pontos para cada aluno. Quando chegarmos ao SELECT, tudo o que precisamos fazer é encontrar a quantidade média de pontos e agrupar os resultados por escola.

Ao construir uma longa consulta SQL desta forma, você realmente escreve uma consulta que já não é muito longa nem complicada. Depende apenas de como você optar por quebrá-la.

Dica 5: Fique com uma Convenção de Nomeação

É também muito importante utilizar uma convenção de nomenclatura única para tabelas, colunas e consultas. Isto torna o código SQL mais fácil de escrever e ler.

Quando um banco de dados legado tem tabelas com o nome PRODUCT, users, USERS_other, e UserSECOND_NEW, ele parece muito pouco profissional e a codificação fica caótica. Siga as regras estabelecidas para capitalização, sublinhados, espaços, etc. Isto também se aplica aos estilos de consulta: seguir as mesmas regras de formatação e padrões de recuo para todo o banco de dados. Se você iniciar uma nova linha após uma SELECT, faça-o sempre, especialmente ao escrever uma longa consulta SQL.

As convenções de nomenclatura podem ser muito diferentes de banco de dados para banco de dados. Como na indentação, não há um estilo único reconhecido pela indústria. Eu recomendo que você encontre quais convenções são as mais utilizadas e modele seu próprio estilo sobre elas. Estes artigos no Vertabelo e os blogs Lunch by Lunch são um bom lugar para começar.

A melhor maneira de entender a diferença entre o bom e o mau estilo de consulta é vê-los por si mesmo. Abaixo, encontramos um exemplo de estilo ruim:

SELECT name, SECONDNAME, Date_TIME, address, SecondAddress
FROM registry, other_USERSData
WHERE registry.id = other_USERSData.id;

Esta consulta, que usa um estilo constante, é muito mais legível:

SELECT name, second_name, date_time, address, second_address
FROM registry, other_users_data
WHERE registry.id = other_users_data.id;

A Misteriosa Consulta SQL Longa - Resumo

Resumindo, estas dicas o ajudarão a escrever melhores consultas, não importa sua extensão, mas é especialmente importante aplicá-las sempre que você escrever uma longa consulta SQL. A melhor coisa que você pode fazer é praticar usando boas técnicas. Se você não souber como desenvolver suas habilidades, nossa SQL para Iniciantes curso é uma ótima solução. Há muitas lições que lhe ensinarão como organizar consultas SQL.

Levará tempo para aprender como escrever consultas SQL limpas e inteligentes. Você precisará compreender as relações entre tabelas, código e planejamento de dados, como identificar as partes de uma consulta e quais resultados você pode esperar. Paciência e trabalho duro são as chaves para o sucesso!