Применяют ли базы данных 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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