Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
1

Оптимизация запроса

20.01.2016, 20:57. Показов 543. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Столкнулся с такой проблемой, мне нужно выполнить запрос вида:
MySQL
1
2
3
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)
Соответственно хочется избежать дублирования выборки
MySQL
1
SELECT `emp_id` FROM x WHERE y
Может Вы знаете, как можно его оптимизировать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2016, 20:57
Ответы с готовыми решениями:

Оптимизация запроса
Добрый день, есть вот такой запрос: select id, content, vote from table1 where DATE_FORMAT(date,...

Оптимизация запроса
SELECT t.id AS t0_c0, t.catid AS t0_c1, t.title AS t0_c2, t.object AS t0_c3, t.description AS...

Оптимизация запроса
Здравствуйте. Ломаю голову об оптимизации запроса. Есть две таблицы CREATE TABLE `test` (...

Оптимизация запроса
Идет поиск по полю date_added(TIMESTAMP) ... WHERE DATE(date_added) = '2017-09-02' Как и...

7
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.01.2016, 09:33 2
Цитата Сообщение от TheSeg Посмотреть сообщение
хочется избежать дублирования выборки
SQL
1
2
3
4
5
6
7
8
SELECT *
FROM emps E,
   (SELECT emp_id
    FROM x
    WHERE y
   ) X
WHERE (E.parent_id = X.emp_id)
     OR  (E.id = X.emp_id)
1
34 / 30 / 10
Регистрация: 24.11.2014
Сообщений: 188
Записей в блоге: 11
21.01.2016, 10:42 3
Я бы cross join написал. Через запятую во FROM как-то архаичненько.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.01.2016, 11:40 4
Цитата Сообщение от Aleks_U Посмотреть сообщение
Через запятую во FROM как-то архаичненько
Это дело вкуса
0
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
21.01.2016, 13:50  [ТС] 5
Я затеял все это ради скорости выполнения, а с join, насколько я знаю, будет выполняться значительно медленней. Grossmeister, спасибо, я о таком способе даже не думал. Он немного выигрывает по скорости, хотя и действительно выглядит малость запутанно.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.01.2016, 14:31 6
Цитата Сообщение от TheSeg
а с join, насколько я знаю, будет выполняться значительно медленней.
С какой стати? На практике join содержат подавляющее большинство запросов, поэтому производители СУБД обычно оптимизируют работу с ним. Хотя если нужно оптимизировать какой-то конкретный запрос, обычно пишут несколько вариантов и сравнивают их планы выполнения.

Цитата Сообщение от TheSeg
хотя и действительно выглядит малость запутанно.
Это с непривычки
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
21.01.2016, 14:36  [ТС] 7
Можно тогда спросить, как бы он выглядел на JOIN?
0
34 / 30 / 10
Регистрация: 24.11.2014
Сообщений: 188
Записей в блоге: 11
21.01.2016, 15:23 8
М.б. вот так
MySQL
1
2
3
4
5
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)
0
21.01.2016, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2016, 15:23
Помогаю со студенческими работами здесь

Оптимизация запроса
Добрый день. Подскажите как по человечески построить запрос: нужно получать данные по сотрудникам...

Оптимизация запроса
Здравствуйте!! Есть таблица с полем rfid. в Нем через запятую хранятся записи (не более...

Оптимизация запроса
Здравствуйте, проблема в следующем, время генерации страницы без запроса ниже: 0,00702, с ним около...

Оптимизация запроса
Народ, добрый, подскажите. Можно ли оптимизировать запрос так, чтобы сократить время выполнения. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru