За последние 24 часа нас посетили 21993 программиста и 1099 роботов. Сейчас ищут 705 программистов ...

Mysql - выборка

Тема в разделе "MySQL", создана пользователем Johnson, 19 фев 2010.

  1. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Есть вопрос по выборке, точнее не по самой выборке SELECT, а о методе.
    Нужно выбрать из одной талицы поля, но так, чтобы основные значения совпадали со значенями в четырех других таблицах.

    Какой мето эффективнее использовать: LEFT JOIN

    SELECT v.video_id, a.name, g.genre
    FROM videos AS v
    LEFT JOIN link_actors_videos AS la ON la.video_id = v.video_id
    LEFT JOIN actors AS a ON a.actor_id = la.actor_id
    LEFT JOIN link_genre_video AS lg ON lg.video_id = v.video_id
    LEFT JOIN genres AS g ON g.genre_id = lg.genre_id


    либо простое объединение

    SELECT v.video_id, a.name, g.genre
    FROM videos AS v,link_actors_videos AS la,actors AS a,link_genre_video AS lg, genres AS g
    WHERE la.video_id = v.video_id, a.actor_id = la.actor_id, lg.video_id = v.video_id,g.genre_id = lg.genre_id


    какой из этих методо работает быстрее?
    или есть более быстрые способы выборки из 4-5 таблиц?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    взял бы да и попробова... в пххмайадмин же пишется за какое время выполнился запрос
     
  3. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Я б с удовольствием, но база у меня состоит из 4 записей.
    А это особой эффективности не покажет.
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Johnson
    Для начала стоит понять, что эти запросы дают два разных результата.

    А потом задаться вопросом, что эффективнее ловить рыбу или сверлить дырки?
     
  5. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Спасибо за ответ! Я знаю что они выдают разный результат.
    Вопрос был в том, какой метод лучше использовать, будь то LEFT JOIN, INNER JOIN или RIGHT JOIN.
    Хочу найти оптимальный и быстрый вариант. Может кто знает?
     
  6. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Johnson
    LEFT [OUTER] JOIN и RIGHT JOIN - одно и то же (и по скорости и по принципу)
    LEFT [OUTER] JOIN и INNER JOIN - разные результаты (примеры смотрите в документации)

    Декартово соединение "," - третий вид запросов.

    Тип соединения выбирается исходя из логики приложения и связей в таблицах, а не по принципу "что быстрее". Простите, ваш вопрос некорректен.
    В общем учите мат.часть. Simpliest вам уже на всё ответил.

    http://sql-ex.ru/exercises.php - рекомендую