#sql
#sql
Вопрос:
Почему коррелированные подзапросы выполняются медленнее?
Комментарии:
1. Почему они должны быть одинаковыми? Вы изменили логику. Вы фильтровали на основе среднего значения по стране, а теперь вы фильтруете на основе среднего значения по всему миру.
2. Я не уверен, что вы подразумеваете под «первым раундом вычисления» или «цикл продолжается». SQL — это декларативный язык, вы указываете ему, какие результаты вы хотите, обычно вы не говорите о циклах или раундах. Ваш первый запрос переводится как «дайте мне все игры, в которых количество голов более чем в 3 раза превышает среднее значение для игровой страны», а второй — «»дайте мне все игры, в которых количество голов более чем в 3 раза превышает среднее значение по миру».
3. Что вы подразумеваете под «глобальным»? Не имеет значения, что два псевдонима указывают на одну и ту же таблицу. Представьте, что на самом деле это две разные таблицы, в которых случайно содержатся одни и те же данные.
Ответ №1:
Чего вы не понимаете?
Общее среднее значение, умноженное на 3, отфильтровывает меньше строк, чем среднее значение по стране.
В качестве примера, глобальная средняя версия будет отфильтровывать некоторые целые страны (с низким уровнем выше). Но может быть включена версия для каждой страны.
Комментарии:
1. @ChengYunQi . . . Это точно такая же идея, потому что это зависит от данных. Результат неудивителен.