Re[93]: В России опять напишут новый объектно-ориентированны
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.07.18 17:41
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Все таки SQL сервер такое оптимизирует, но да, для других молодых баз данных это было бы ускорением.

D>https://sqlperformance.com/2018/06/sql-performance/join-elimination-unnecessary-tables
Вот удивительно, всё-таки, как мир устроен. Сидим тут, спорим, и как раз параллельно чуваки из МС рассказывают ровно про эту тему
Проверил на своём 2017 експресс — вырезает.
Допилили-таки! Интересно, а допилили ли они переупорядочивание group by / join?
Это вторая из самых популярных semantic optimizations, которые раньше никто делать не умел.
Имеется в виду вот такой случай:
select city.id, city.Name, sum(o.amount)
from orders o 
inner join city on o.Customer_City = city.id
group by city.id, city.Name

Семантически этот запрос строго эквивалентен
select city.id, city.Name, amount
from city inner join
(select Customer_City, sum(amount) as amount from orders group by orderId) o
on o.Customer_City = city.id

Благодаря, понятное дело, тому, что city.id — это PK, и дальнейшие группировки по зависимым полям этой таблицы нам гарантированно ничего не дадут.
При этом стоимость этих двух запросов отличается достаточно сильно — в клинических случаях в разы, т.к. group by по большим промежуточным результатам — это упс.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.