Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте! У меня такой вопрос по MySQL
Есть работающее представление с вложенным запросом:
CREATE OR REPLACE
DEFINER=CURRENT_USER
SQL SECURITY DEFINER
VIEW manager1
AS SELECT * FROM products
WHERE id_catalog IN (SELECT id_catalog FROM catalogs
WHERE name = 'Видеоадаптеры' OR name = 'Материнские платы') ORDER BY name;
скажите пожалуйста, вложенный запрос в конструкции IN выполнится единожды заполнив список значениями, или же выполнытся будет несколько раз? (id_catalog является первичным ключем)
И вот что еще интересно - я новичок, мне не совсем понятен механизм работы SELECT в целом - как и в каких ситуациях выполняется проход по таблицам. Вот к примеру, каков будет механизм работы внешнего и вложенного запроса из приведенного выше представления? Мне кажется (но я наверное ошибаюсь), что сначала выполнится вложенный запрос и вставит свои значения в список IN, а потом внешний запрос будет последовательно просматривать каждую строку таблицы products и сравнивать(искать) id_catalog равный значению из IN без повторного выполнения вложенного запроса.
Проясните пожалуйста ситуацию. С уважением, Юрий!
Неактивен
зависит от версии
в ранних версиях вложенный запрос выполнялся для каждой строки внешнего запроса
начиная с mariabd 5.3 исправлено; в mysql, емнип, с 5.6
о том как оптимизатор обрабатывает вложенные запросы хорошо изложено тут
Неактивен
vasya написал:
зависит от версии
в ранних версиях вложенный запрос выполнялся для каждой строки внешнего запроса
начиная с mariabd 5.3 исправлено; в mysql, емнип, с 5.6
о том как оптимизатор обрабатывает вложенные запросы хорошо изложено тут
Спасибо!
Неактивен
Страниц: 1