Применяют ли базы данных SQL фильтры WHERE перед объединением?MySql

Форум по Mysql
Anonymous
Применяют ли базы данных SQL фильтры WHERE перед объединением?

Сообщение Anonymous »

Код: Выделить всё

from a in xx
join b in yy on a.someprop equals b.someprop
join c in zz on a.someprop1 equals c.someprop
where a.someprop2.Contains(strval)
Я пытаюсь понять, как выполнение SQL-запроса работает с соединениями и фильтрами WHERE.
Насколько я понимаю, когда запрос включает несколько таблиц, база данных сначала объединяет все таблицы, а затем применяет только предложение WHERE. Это звучит неэффективно, поскольку означает, что ненужные строки обрабатываются перед фильтрацией.
Однако я читал, что современные оптимизаторы SQL могут переупорядочивать операции — например, применяя фильтры раньше (предикатное нажатие), чтобы объединялось меньше строк, что должно быть более эффективно.
Как я могу проверить фактический порядок выполнения (например, происходит ли фильтрация до или после объединения)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... fore-joins

Вернуться в «MySql»