Det du skriver är inte vad SQL ser

Förbättra frågeprestanda i PostgreSQL

Amy McCarty

Instructor

Algebraisk operationsordning

 

  • Lexikal (som skrivet)
  • Logisk (som körs)

 

PEMDAS BODMAS
Parenteser Brackets
Exponenter Order
Multiplikation /Division Division /Multiplikation
Addition /Subtraktion Addition /Subtraktion
Förbättra frågeprestanda i PostgreSQL

Tillämpa operationsordningen

 

Lexikal:

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

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

$$ x = 14 \div 2 $$

$$ x = 7 $$

 

Logisk:

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

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

$$ x = 2 + 6 $$

$$ x = 8 $$

Förbättra frågeprestanda i PostgreSQL

SQLs logiska operationsordning

Ordning Klausul Syfte
1 FROM Anger vägen till tabellen eller tabellerna om frågan innehåller joins
2 WHERE Filtrerar eller begränsar posterna
3 GROUP BY Grupperar poster i kategorier
4 SUM(), COUNT(), osv Aggregerar
5 SELECT Identifierar kolumner att returnera
SELECT COUNT(*) FROM tableA WHERE col1 = 77
Förbättra frågeprestanda i PostgreSQL

GROUP BY och aggregeringar

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
Förbättra frågeprestanda i PostgreSQL

Operationsordning för GROUP BY och aggregeringar

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
Ordning SQL-klausul Tillgängliga kolumner
1 FROM weather_events alla
3 GROUP BY elements elements
4 COUNT elements
Förbättra frågeprestanda i PostgreSQL

GROUP BY matchar aggregeringarna

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
Förbättra frågeprestanda i PostgreSQL

GROUP BY matchar aggregeringarna

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

Resultat

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
Förbättra frågeprestanda i PostgreSQL

SQLs logiska operationsordning, fortsättning

Ordning Klausul Syfte
...
5 SELECT Identifierar kolumner att returnera
6 DISTINCT Tar bort dubbletter
7 ORDER BY Sorterar resultaten
8 LIMIT Tar bort rader
Förbättra frågeprestanda i PostgreSQL

DISTINCT och 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
Förbättra frågeprestanda i 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
Förbättra frågeprestanda i 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
Ordning SQL-klausul Tillgängliga rader
1 FROM weather_events alla
Förbättra frågeprestanda i 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
Ordning SQL-klausul Tillgängliga rader
1 FROM weather_events alla
5 SELECT storm, elements alla
Förbättra frågeprestanda i 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
Ordning SQL-klausul Tillgängliga rader
1 FROM weather_events alla
5 SELECT storm, elements alla
6 DISTINCT 1, 2, 3, 5
Förbättra frågeprestanda i 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
Ordning SQL-klausul Tillgängliga rader
1 FROM weather_events alla
5 SELECT storm, elements alla
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
Förbättra frågeprestanda i 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
Ordning SQL-klausul Tillgängliga rader
1 FROM weather_events alla
5 SELECT storm, elements alla
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
Förbättra frågeprestanda i PostgreSQL
Ordning Klausul Syfte Begränsar
1 FROM Anger vägen till tabellen/tabellerna
2 WHERE Filtrerar eller begränsar poster # rader
3 GROUP BY Grupperar poster i kategorier # kolumner
4 SUM, COUNT, osv Aggregerar # rader
5 SELECT Identifierar kolumner att returnera # kolumner
6 DISTINCT Tar bort dubbletter # rader
7 ORDER BY Sorterar resultaten
8 LIMIT Filtrerar poster # rader
Förbättra frågeprestanda i PostgreSQL

Nu kör vi en övning!

Förbättra frågeprestanda i PostgreSQL

Preparing Video For Download...