Melhorando o Desempenho de Consultas no PostgreSQL
Amy McCarty
Instructor
| PEMDAS | BODMAS |
|---|---|
| Parenthesis | Brackets |
| Exponents | Order |
| Multiplication /Division | Division /Multiplication |
| Addition /Subtraction | Addition /Subtraction |
$$ x = 2 + (8 + 4) \div 2 $$
$$ x = 10 + 4) \div 2 $$
$$ x = 14 \div 2 $$
$$ x = 7 $$
$$ x = 2 + (8 + 4) \div 2 $$
$$ x = 2 + \frac{12}{2} $$
$$ x = 2 + 6 $$
$$ x = 8 $$
| 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
| 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
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 |
SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
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 |
| 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 |
| 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
| 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
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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