O que você escreve não é o que o SQL vê

Melhorando o Desempenho de Consultas no PostgreSQL

Amy McCarty

Instructor

Ordem algébrica das operações

 

  • Lexical (como escrito)
  • Lógico (como executado)

 

PEMDAS BODMAS
Parenthesis Brackets
Exponents Order
Multiplication /Division Division /Multiplication
Addition /Subtraction Addition /Subtraction
Melhorando o Desempenho de Consultas no PostgreSQL

Aplicando a ordem das operações

 

Lexical:

$$ x = 2 + (8 + 4) \div 2 $$

$$ x = 10 + 4) \div 2 $$

$$ x = 14 \div 2 $$

$$ x = 7 $$

 

Lógico:

$$ x = 2 + (8 + 4) \div 2 $$

$$ x = 2 + \frac{12}{2} $$

$$ x = 2 + 6 $$

$$ x = 8 $$

Melhorando o Desempenho de Consultas no PostgreSQL

Ordem lógica de operações no SQL

Ordem Cláusula Finalidade
1 FROM Indica a(s) tabela(s); inclui junções se houver
2 WHERE Filtra ou limita os registros
3 GROUP BY Agrupa registros em categorias
4 SUM(), COUNT(), etc. Agrega
5 SELECT Identifica as colunas a retornar
SELECT COUNT(*) FROM tableA WHERE col1 = 77
Melhorando o Desempenho de Consultas no PostgreSQL

Group by e agregações

event_location storm elements days
Russia blizzard water 1
Argentina tornado water 1
Argentina tornado wind 1
Australia tornado wind 1
Kuwait haboob wind 2
USA haboob wind 2
SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements

 

Sem saída - 
seu código gerou um erro

coluna "storm" deve aparecer na 
cláusula GROUP BY ou ser usada em uma 
função de agregação
Melhorando o Desempenho de Consultas no PostgreSQL

Ordem de operações com Group by e agregações

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
ordem Cláusula SQL colunas disponíveis
1 FROM weather_events todas
3 GROUP BY elements elements
4 COUNT elements
Melhorando o Desempenho de Consultas no PostgreSQL

Group by combina com as agregações

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
Melhorando o Desempenho de Consultas no PostgreSQL

Group by combina com as agregações

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm

Resultados

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
Melhorando o Desempenho de Consultas no PostgreSQL

Ordem lógica de operações no SQL (cont.)

Ordem Cláusula Finalidade
...
5 SELECT Identifica as colunas a retornar
6 DISTINCT Remove duplicatas
7 ORDER BY Ordena os resultados
8 LIMIT Remove linhas
Melhorando o Desempenho de Consultas no PostgreSQL

Distinct e limit

row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
Melhorando o Desempenho de Consultas no PostgreSQL
row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events 
ORDER BY storm LIMIT 3
Melhorando o Desempenho de Consultas no PostgreSQL
row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events 
ORDER BY storm LIMIT 3
ordem Cláusula SQL linhas disponíveis
1 FROM weather_events todas
Melhorando o Desempenho de Consultas no PostgreSQL
row_no storm elements
1 blizzard water
2 tornado water
3 tornado wind
5 haboob wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
ordem Cláusula SQL linhas disponíveis
1 FROM weather_events todas
5 SELECT storm, elements todas
Melhorando o Desempenho de Consultas no PostgreSQL
row_no storm elements
1 blizzard water
2 tornado water
3 tornado wind
5 haboob wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
ordem Cláusula SQL linhas disponíveis
1 FROM weather_events todas
5 SELECT storm, elements todas
6 DISTINCT 1, 2, 3, 5
Melhorando o Desempenho de Consultas no PostgreSQL
row_no storm elements
1 blizzard water
5 haboob wind
2 tornado water
3 tornado wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
ordem Cláusula SQL linhas disponíveis
1 FROM weather_events todas
5 SELECT storm, elements todas
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
Melhorando o Desempenho de Consultas no PostgreSQL
row_no storm elements
1 blizzard water
5 haboob wind
2 tornado water

 

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
ordem Cláusula SQL linhas disponíveis
1 FROM weather_events todas
5 SELECT storm, elements todas
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
Melhorando o Desempenho de Consultas no PostgreSQL
Ordem Cláusula Finalidade Limites
1 FROM indica a(s) tabela(s)
2 WHERE filtra ou limita os registros nº de linhas
3 GROUP BY agrupa registros em categorias nº de colunas
4 SUM, COUNT, etc. agrega nº de linhas
5 SELECT identifica as colunas a retornar nº de colunas
6 DISTINCT remove duplicatas nº de linhas
7 ORDER BY ordena os resultados
8 LIMIT filtra registros nº de linhas
Melhorando o Desempenho de Consultas no PostgreSQL

Vamos praticar!

Melhorando o Desempenho de Consultas no PostgreSQL

Preparing Video For Download...