Те, що ви пишете, — не те, що «бачить» SQL

Покращення продуктивності запитів у PostgreSQL

Amy McCarty

Instructor

Алгебраїчний порядок дій

 

  • Лексичний (як написано)
  • Логічний (як виконується)

 

PEMDAS BODMAS
Parenthesis Brackets
Exponents Order
Multiplication /Division Division /Multiplication
Addition /Subtraction Addition /Subtraction
Покращення продуктивності запитів у PostgreSQL

Застосування порядку дій

 

Лексично:

$$ 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 $$

Покращення продуктивності запитів у PostgreSQL

Логічний порядок виконання в SQL

Порядок Клауза Призначення
1 FROM Вказує таблицю або таблиці, якщо є об'єднання
2 WHERE Фільтрує або обмежує записи
3 GROUP BY Групує записи за категоріями
4 SUM(), COUNT(), тощо Агрегує
5 SELECT Визначає стовпці для повернення
SELECT COUNT(*) FROM tableA WHERE col1 = 77
Покращення продуктивності запитів у PostgreSQL

GROUP BY та агрегування

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
Покращення продуктивності запитів у PostgreSQL

Порядок: GROUP BY та агрегати

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
порядок SQL-клауза доступні стовпці
1 FROM weather_events всі
3 GROUP BY elements elements
4 COUNT elements
Покращення продуктивності запитів у PostgreSQL

GROUP BY відповідає агрегатам

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
Покращення продуктивності запитів у PostgreSQL

GROUP BY відповідає агрегатам

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

Результати

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
Покращення продуктивності запитів у PostgreSQL

Логічний порядок у SQL: продовження

Порядок Клауза Призначення
...
5 SELECT Визначає стовпці для повернення
6 DISTINCT Прибирає дублікати
7 ORDER BY Упорядковує результат
8 LIMIT Скорочує рядки
Покращення продуктивності запитів у PostgreSQL

DISTINCT і 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
Покращення продуктивності запитів у 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
Покращення продуктивності запитів у 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
порядок SQL-клауза доступні рядки
1 FROM weather_events всі
Покращення продуктивності запитів у 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
порядок SQL-клауза доступні рядки
1 FROM weather_events всі
5 SELECT storm, elements всі
Покращення продуктивності запитів у 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
порядок SQL-клауза доступні рядки
1 FROM weather_events всі
5 SELECT storm, elements всі
6 DISTINCT 1, 2, 3, 5
Покращення продуктивності запитів у 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
порядок SQL-клауза доступні рядки
1 FROM weather_events всі
5 SELECT storm, elements всі
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
Покращення продуктивності запитів у 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
порядок SQL-клауза доступні рядки
1 FROM weather_events всі
5 SELECT storm, elements всі
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
Покращення продуктивності запитів у PostgreSQL
Порядок Клауза Призначення Обмеження
1 FROM вказує таблиці
2 WHERE фільтрує або обмежує записи к-ть рядків
3 GROUP BY розкладає записи по категоріях к-ть стовпців
4 SUM, COUNT, тощо агрегує к-ть рядків
5 SELECT визначає стовпці для повернення к-ть стовпців
6 DISTINCT прибирає дублікати к-ть рядків
7 ORDER BY упорядковує результат
8 LIMIT фільтрує записи к-ть рядків
Покращення продуктивності запитів у PostgreSQL

Давайте потренуємось!

Покращення продуктивності запитів у PostgreSQL

Preparing Video For Download...