Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация отбора запроса / 5 сообщений из 5, страница 1 из 1
20.08.2014, 15:18:08
    #38724628
Vyze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация отбора запроса
Приветствую, уважаемые гуру.
Ситуация: необходимо выбрать поле из таблицы final_table , с отбором по полю t_1_id из таблицы t_1 . Таблица t_1 с отбором по полю t_2_id из таблицы t_2. А таблица t_2 с отбором по полю number = 555. Есть 2 варианта реализации:
параллельным запросом -
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
    `final_table`.`time`
  FROM
  `final_table`,
    `t_1`,
    `t_2` 
  WHERE `t_2`.`number` = 555  
    AND `t_2`.`id` = `t_1`.`t_2_id`
    AND `t_1`.`id` = `final_table`.`t_1_id`



или вложенным -
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT 
    `final_table`.`time`
  FROM
    `final_table` 
  WHERE `final_table`.`t_1_id` IN 
    (SELECT 
      `id` 
    FROM
      `t_1` 
    WHERE 
      `t_1`.`t_2_id` IN 
      (SELECT 
        `id` 
      FROM
        `t_2` 
      WHERE `t_2`.`number` = 555))



Сейчас таким образом выбирается очень маленький объем данных, и я не могу сравнить производительность нормально. Какой вариант более предпочтителен по производительности? Возможно, это как-то стандартизировано и описано, а я не нашел.
...
Рейтинг: 0 / 0
20.08.2014, 15:19:54
    #38724632
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация отбора запроса
первый.
называется INNER JOIN
...
Рейтинг: 0 / 0
20.08.2014, 15:28:12
    #38724648
Vyze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация отбора запроса
ScareCrow,

т.е. INNER JOIN последовательно между таблицами ?
Код: plsql
1.
2.
3.
...FROM final_table 
INNER JOIN table_1 ON final_table.t_1_id = t_1.id  
INNER JOIN t_2 ON  t_1.t_2.id = t_2.id WHERE t_2.number = 555 
...
Рейтинг: 0 / 0
20.08.2014, 15:44:04
    #38724688
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация отбора запроса
Твой первый и последний запросы абсолютно идентичны. Не текстом - но оба генерируют абсолютно одинаковый псевдокод.
Именно такая форма предпочтительна, особенно если на таблицах имеются необходимые для нормальной работы запроса индексы.
Вариант же с вложенными подзапросами почти наверняка приведёт к генерации временных таблиц, а при объёмных данных лежать им на диске, что выполнения ни разу не ускорит...
...
Рейтинг: 0 / 0
20.08.2014, 16:04:31
    #38724722
Vyze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация отбора запроса
Всем спасибо
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация отбора запроса / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]