SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.01.2013 12:12:54

memba
Участник
Зарегистрирован: 11.06.2011
Сообщений: 12

Работа JOIN + ON и перекрёстного объединения

Добрый день!

Что-то я с утра встал в ступор. Мне достался для работы большой сайта в котором программист или их несколько было объединяют таблицы простым перекрестным объединением.

SELECT a, b FROM A, B WHERE a=b


Я всегда считал, что в таком случае MySQL вначале объединяет каждую запись таблицы A с каждой записью таблицы B, а потом выбирает из получившейся таблицы по условию WHERE.

Из это если в таблице A и B по 100 000 записей, то получим таблицу в 10 000 000 000 записей из которых ещё и выбрать что-то нужно.

Поэтому я делал так:

SELECT a, b FROM A JOIN B ON a=b


Считая, что MySQL объединят таблицы уже с условием.

Я решил проверить, как это делает всеми любимый и быстры LiveStreet, и оказалось что он тоже использует простое перекрёстное объединение, бывает и по 4 таблицы.

Вопрос. Кто не прав?

Неактивен

 

#2 22.01.2013 15:49:51

memba
Участник
Зарегистрирован: 11.06.2011
Сообщений: 12

Re: Работа JOIN + ON и перекрёстного объединения

Вообщем, если кому интересно. Я соединил две таблицы с некоторыми условиями. Таблицы по 300 000 записей в каждой.

Между JOIN c ON и перекрестным с WHERE по скорости не какай разницы я не заметил.

Неактивен

 

#3 22.01.2013 16:36:20

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Работа JOIN + ON и перекрёстного объединения

Разницы быть не должно. Это разные синтаксические формы записи одного и того же. Во внутреннем мире MySQL запросы должны выглядеть одинаково.

Неактивен

 

#4 22.01.2013 22:48:41

memba
Участник
Зарегистрирован: 11.06.2011
Сообщений: 12

Re: Работа JOIN + ON и перекрёстного объединения

Теперь я это понял.

У меня когда-то давно была книжка по MySQL, в которой автор черным по белому писал, что JOIN это хорошо, а перечисление таблицы в FROM это плохо. И мне запало в голову, что все его примеры с перечислением генерировали огромное кол-ва данных, в отличие от JOIN.

В итоге доверяй, но проверяй.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson