Другие языки программирования и технологии
Что лучше "SELECT поля FROM таблица LEFT JOIN таблица ON условие" или...."SELECT поля FROM таблица1, таблица2 WHERE"
step, games.bets, players.money, players.id AS id_player FROM players LEFT JOIN games ON games.id = 1 Или SELECT games.step, games.bets, players.money, players.id as id_player FROM games, players WHERE games.id = 1 Если и то и то возвращает обсалютно одинаковое значение
FROM games, players, ..-это синоним INNER JOIN.
Сравнивать INNER и LEFT джоины, задаваясь вопросом "что лучше", примерно тоже самое, что сравнивать зимнюю и летнюю резину на автомобиль, задаваясь тем же вопросом. Очевидно, что на летней резине лучше ездить летом, а на зимней по гололёду зимой.
Левый джоин объединяет все записи таблицы, даже если у неё нет связи и нет значения для объединения. Иннер джоин объединяет только записи, имеющие связь по значению.
Если требуется найти элемент одной таблицы и все связанные с ним элементы другой - используем ИННЕР джоин.
Если требуется найти элементы таблицы для которых нет связанных элементов в другой - используем ЛЕВЫЙ джоин.
Если требуется найти элементы одной таблицы и опционально добавить к ним значения из другой (они могут быть, а могут и не быть) - снова используем ЛЕВЫЙ джоин.
Это разные вещи и корректно будет спрашивать "чем они отличаются", а не "что лучше. "
UPD.: в таблицах с 100 или 1000 строками левый джоин будет работать почти также как иннер. Разве что может лишнего немного вернуть. Но если объём таблицы перевалит за десяток миллионов строк и левых джоинов в одном запросе будет несколько, запрос может выполняться и по несколько минут.
Сравнивать INNER и LEFT джоины, задаваясь вопросом "что лучше", примерно тоже самое, что сравнивать зимнюю и летнюю резину на автомобиль, задаваясь тем же вопросом. Очевидно, что на летней резине лучше ездить летом, а на зимней по гололёду зимой.
Левый джоин объединяет все записи таблицы, даже если у неё нет связи и нет значения для объединения. Иннер джоин объединяет только записи, имеющие связь по значению.
Если требуется найти элемент одной таблицы и все связанные с ним элементы другой - используем ИННЕР джоин.
Если требуется найти элементы таблицы для которых нет связанных элементов в другой - используем ЛЕВЫЙ джоин.
Если требуется найти элементы одной таблицы и опционально добавить к ним значения из другой (они могут быть, а могут и не быть) - снова используем ЛЕВЫЙ джоин.
Это разные вещи и корректно будет спрашивать "чем они отличаются", а не "что лучше. "
UPD.: в таблицах с 100 или 1000 строками левый джоин будет работать почти также как иннер. Разве что может лишнего немного вернуть. Но если объём таблицы перевалит за десяток миллионов строк и левых джоинов в одном запросе будет несколько, запрос может выполняться и по несколько минут.
Современные БД для любого запроса создают план выполнения. При помощи специальных утилит эти планы можно смотреть и анализировать. Если возникают такие вопросы, это то, что надо сделать - сравнить планы.
Кстати, приведенные запросы грешат тем, что в них нет никакого объединения таблиц - БД вернет кортезианское произведение, отфильтрованное по games.id = 1. Такие результаты крайне редко имеют смысл и указывают на неправильный дизайн БД.
Кстати, приведенные запросы грешат тем, что в них нет никакого объединения таблиц - БД вернет кортезианское произведение, отфильтрованное по games.id = 1. Такие результаты крайне редко имеют смысл и указывают на неправильный дизайн БД.
Если возвращают одно и тоже, то смотрите по времени выполнения.
Несколько странный запрос. Используются две таблицы, а условие только по одной (WHERE games.id = 1), нет определены связи между таблицами
Несколько странный запрос. Используются две таблицы, а условие только по одной (WHERE games.id = 1), нет определены связи между таблицами
Похожие вопросы
- Excel таблицы: самоочищающиеся поля.
- MySQL и PHP SELECT * FROM `users` Как вывести определенную информацию из графы БД, человека который сейчас авторизован
- Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах
- Программа на Си (не С++), Поля, Для экспертов.
- Какая концепция таблиц в БД MySQL лучше?
- Вставка "вложенной" таблицы в Excel (или Access)
- Как легче создать большую базу данных в ACCESS 2010? Проблема вот в чем: сейчас б/д содержит 60 таблиц, 140 запросов. На
- Импорт имен файлов в таблицу Excel
- Нужна программа для заполнения таблицы 9*2, чтобы в ней не было повторяющихся столбцов на языке lua (можно на С++)
- Web программирование, Обновление таблицы в реальном времени. Научите, пожалуйста!