Почему подзапросы выполняются медленнее?

#sql

#sql

Вопрос:

Почему коррелированные подзапросы выполняются медленнее?

Комментарии:

1. Почему они должны быть одинаковыми? Вы изменили логику. Вы фильтровали на основе среднего значения по стране, а теперь вы фильтруете на основе среднего значения по всему миру.

2. Я не уверен, что вы подразумеваете под «первым раундом вычисления» или «цикл продолжается». SQL — это декларативный язык, вы указываете ему, какие результаты вы хотите, обычно вы не говорите о циклах или раундах. Ваш первый запрос переводится как «дайте мне все игры, в которых количество голов более чем в 3 раза превышает среднее значение для игровой страны», а второй — «»дайте мне все игры, в которых количество голов более чем в 3 раза превышает среднее значение по миру».

3. Что вы подразумеваете под «глобальным»? Не имеет значения, что два псевдонима указывают на одну и ту же таблицу. Представьте, что на самом деле это две разные таблицы, в которых случайно содержатся одни и те же данные.

Ответ №1:

Чего вы не понимаете?

Общее среднее значение, умноженное на 3, отфильтровывает меньше строк, чем среднее значение по стране.

В качестве примера, глобальная средняя версия будет отфильтровывать некоторые целые страны (с низким уровнем выше). Но может быть включена версия для каждой страны.

Комментарии:

1. @ChengYunQi . . . Это точно такая же идея, потому что это зависит от данных. Результат неудивителен.