То, что вы пишете, SQL видит иначе

Оптимизация запросов в PostgreSQL

Amy McCarty

Instructor

Алгебраический порядок действий

 

  • Лексический (как написано)
  • Логический (как выполняется)

 

PEMDAS BODMAS
Pаренthesis 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...