To, co piszesz, nie jest tym, co widzi SQL

Optymalizacja wydajności zapytań w PostgreSQL

Amy McCarty

Instructor

Algebraiczna kolejność działań

 

  • Leksykalna (kolejność zapisu)
  • Logiczna (kolejność wykonania)

 

PEMDAS BODMAS
Parenthesis Brackets
Exponents Order
Multiplication /Division Division /Multiplication
Addition /Subtraction Addition /Subtraction
Optymalizacja wydajności zapytań w PostgreSQL

Stosowanie kolejności działań

 

Leksykalnie:

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

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

$$ x = 14 \div 2 $$

$$ x = 7 $$

 

Logicznie:

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

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

$$ x = 2 + 6 $$

$$ x = 8 $$

Optymalizacja wydajności zapytań w PostgreSQL

Logiczna kolejność operacji SQL

Kolejność Klauzula Cel
1 FROM wskazuje tabelę lub tabele (przy złączeniach)
2 WHERE filtruje lub ogranicza rekordy
3 GROUP BY grupuje rekordy według kategorii
4 SUM(), COUNT() itp. agreguje
5 SELECT wskazuje kolumny do zwrócenia
SELECT COUNT(*) FROM tableA WHERE col1 = 77
Optymalizacja wydajności zapytań w PostgreSQL

GROUP BY i agregacje

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

 

No output - 
your code generated an error

column "storm" must appear in the 
GROUP BY clause or be used in an 
aggregate function
Optymalizacja wydajności zapytań w PostgreSQL

Kolejność operacji: GROUP BY i agregacje

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
kolejność klauzula SQL dostępne kolumny
1 FROM weather_events wszystkie
3 GROUP BY elements elements
4 COUNT elements
Optymalizacja wydajności zapytań w PostgreSQL

GROUP BY dopasowany do agregacji

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
Optymalizacja wydajności zapytań w PostgreSQL

GROUP BY dopasowany do agregacji

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

Wyniki

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
Optymalizacja wydajności zapytań w PostgreSQL

Logiczna kolejność operacji SQL – ciąg dalszy

Kolejność Klauzula Cel
...
5 SELECT wskazuje kolumny do zwrócenia
6 DISTINCT usuwa duplikaty
7 ORDER BY porządkuje wyniki
8 LIMIT ogranicza wiersze
Optymalizacja wydajności zapytań w PostgreSQL

DISTINCT i 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
Optymalizacja wydajności zapytań w 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
Optymalizacja wydajności zapytań w 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
kolejność klauzula SQL dostępne wiersze
1 FROM weather_events wszystkie
Optymalizacja wydajności zapytań w 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
kolejność klauzula SQL dostępne wiersze
1 FROM weather_events wszystkie
5 SELECT storm, elements wszystkie
Optymalizacja wydajności zapytań w 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
kolejność klauzula SQL dostępne wiersze
1 FROM weather_events wszystkie
5 SELECT storm, elements wszystkie
6 DISTINCT 1, 2, 3, 5
Optymalizacja wydajności zapytań w 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
kolejność klauzula SQL dostępne wiersze
1 FROM weather_events wszystkie
5 SELECT storm, elements wszystkie
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
Optymalizacja wydajności zapytań w 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
kolejność klauzula SQL dostępne wiersze
1 FROM weather_events wszystkie
5 SELECT storm, elements wszystkie
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
Optymalizacja wydajności zapytań w PostgreSQL
Kolejność Klauzula Cel Ograniczenia
1 FROM wskazuje tabelę lub tabele
2 WHERE filtruje rekordy # wierszy
3 GROUP BY grupuje rekordy # kolumn
4 SUM, COUNT itp. agreguje # wierszy
5 SELECT wskazuje kolumny do zwrócenia # kolumn
6 DISTINCT usuwa duplikaty # wierszy
7 ORDER BY porządkuje wyniki
8 LIMIT ogranicza rekordy # wierszy
Optymalizacja wydajności zapytań w PostgreSQL

Czas na ćwiczenia!

Optymalizacja wydajności zapytań w PostgreSQL

Preparing Video For Download...