Оптимизация запроса - MySQL (220367)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Столкнулся с такой проблемой, мне нужно выполнить запрос вида:
SELECT `id` FROM `emps`
   WHERE `parent_id` IN (SELECT `emp_id` FROM x WHERE y) 
      OR `id` IN (SELECT `emp_id` FROM x WHERE y)
Соответственно хочется избежать дублирования выборки
SELECT `emp_id` FROM x WHERE y
Может Вы знаете, как можно его оптимизировать?

Решение задачи: «Оптимизация запроса»

textual
Листинг программы
SELECT *
  FROM emps E
 INNER JOIN (SELECT emp_id
               FROM x
               WHERE y) X ON (E.parent_id = X.emp_id) OR (E.id = X.emp_id)

Объяснение кода листинга программы

  1. Создаётся запрос на выборку данных из таблицы emps с использованием оператора SELECT *.
  2. В скобках указывается подзапрос, который будет выполнен в рамках этого запроса.
  3. В подзапросе используется оператор SELECT emp_id FROM x WHERE y.
  4. В запросе указывается условие для объединения таблиц emps и x с помощью оператора INNER JOIN.
  5. В качестве условия объединения используются два выражения: (E.parent_id = X.emp_id) и (E.id = X.emp_id).
  6. Запрос не содержит операторов GROUP BY, ORDER BY, LIMIT, OFFSET, поэтому не указаны соответствующие параметры.
  7. Запрос не содержит таблицы FROM после оператора FROM, поэтому не указаны соответствующие параметры.
  8. Запрос не содержит операторов IN, ON DUPLICATE KEY UPDATE, поэтому не указаны соответствующие параметры.
  9. Запрос не содержит операторов UPDATE, DELETE, INSERT, поэтому не указаны соответствующие параметры.
  10. Запрос не содержит операторов MATCH, INNER JOIN, LEFT JOIN, RIGHT JOIN, поэтому не указаны соответствующие параметры.
  11. Запрос не содержит операторов JOIN, поэтому не указаны соответствующие параметры.
  12. Запрос не содержит операторов SET, поэтому не указаны соответствующие параметры.
  13. Запрос не содержит операторов AND, OR, NOT, поэтому не указаны соответствующие параметры.
  14. Запрос не содержит операторов INNER JOIN, поэтому не указаны соответствующие параметры.
  15. Запрос не содержит операторов WHERE, поэтому не указаны соответствующие параметры.
  16. Запрос не содержит операторов GROUP BY, поэтому не указаны соответствующие параметры.
  17. Запрос не содержит операторов ORDER BY, поэтому не указаны соответствующие параметры.
  18. Запрос не содержит операторов LIMIT, поэтому не указаны соответствующие параметры.
  19. Запрос не содержит операторов OFFSET, поэтому не указаны соответствующие параметры.
  20. Запрос не содержит операторов FOR UPDATE, поэтому не указаны соответствующие параметры.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5