Co napíšete, SQL nevidí

Optimalizace výkonu dotazů v PostgreSQL

Amy McCarty

Instructor

Algebraické pořadí operací

 

  • Lexikální (jak je zapsáno)
  • Logické (jak se vykonává)

 

PEMDAS BODMAS
Parenthesis Brackets
Exponents Order
Multiplication /Division Division /Multiplication
Addition /Subtraction Addition /Subtraction
Optimalizace výkonu dotazů v PostgreSQL

Použití pořadí operací

 

Lexikální:

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

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

$$ x = 14 \div 2 $$

$$ x = 7 $$

 

Logické:

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

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

$$ x = 2 + 6 $$

$$ x = 8 $$

Optimalizace výkonu dotazů v PostgreSQL

Logické pořadí operací SQL

Pořadí Klauzule Účel
1 FROM Určuje cestu k tabulce nebo tabulkám, pokud dotaz obsahuje joiny
2 WHERE Filtruje nebo omezuje záznamy
3 GROUP BY Rozdělí záznamy do kategorií
4 SUM(), COUNT(), atd. Agreguje
5 SELECT Určuje sloupce k vrácení
SELECT COUNT(*) FROM tableA WHERE col1 = 77
Optimalizace výkonu dotazů v PostgreSQL

GROUP BY a agregace

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
Optimalizace výkonu dotazů v PostgreSQL

Pořadí operací: GROUP BY a agregace

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
pořadí klauzule SQL dostupné sloupce
1 FROM weather_events všechny
3 GROUP BY elements elements
4 COUNT elements
Optimalizace výkonu dotazů v PostgreSQL

GROUP BY odpovídá agregacím

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
Optimalizace výkonu dotazů v PostgreSQL

GROUP BY odpovídá agregacím

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

Výsledky

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
Optimalizace výkonu dotazů v PostgreSQL

Logické pořadí operací SQL – pokračování

Pořadí Klauzule Účel
...
5 SELECT určuje sloupce k vrácení
6 DISTINCT odstraní duplicity
7 ORDER BY seřadí výsledky
8 LIMIT omezí počet řádků
Optimalizace výkonu dotazů v PostgreSQL

DISTINCT a 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
Optimalizace výkonu dotazů v 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
Optimalizace výkonu dotazů v 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
pořadí klauzule SQL dostupné řádky
1 FROM weather_events všechny
Optimalizace výkonu dotazů v 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
pořadí klauzule SQL dostupné řádky
1 FROM weather_events všechny
5 SELECT storm, elements všechny
Optimalizace výkonu dotazů v 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
pořadí klauzule SQL dostupné řádky
1 FROM weather_events všechny
5 SELECT storm, elements všechny
6 DISTINCT 1, 2, 3, 5
Optimalizace výkonu dotazů v 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
pořadí klauzule SQL dostupné řádky
1 FROM weather_events všechny
5 SELECT storm, elements všechny
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
Optimalizace výkonu dotazů v 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
pořadí klauzule SQL dostupné řádky
1 FROM weather_events všechny
5 SELECT storm, elements všechny
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
Optimalizace výkonu dotazů v PostgreSQL
Pořadí Klauzule Účel Omezení
1 FROM určuje cestu k tabulce/tabulkám
2 WHERE filtruje záznamy # řádků
3 GROUP BY rozdělí záznamy do kategorií # sloupců
4 SUM, COUNT, atd. agreguje # řádků
5 SELECT určuje sloupce k vrácení # sloupců
6 DISTINCT odstraní duplicity # řádků
7 ORDER BY seřadí výsledky
8 LIMIT omezí záznamy # řádků
Optimalizace výkonu dotazů v PostgreSQL

Lass uns üben!

Optimalizace výkonu dotazů v PostgreSQL

Preparing Video For Download...