вопрос по join

oracloid

совсем кукус
ни в чем.
ключевое слово "outer" можно не писать, все равно это будет внешнее объединение.
 

alexey84

phplancer
просто убрал outer и заработало быстрея
на маленькой выборки этой разницы не видно, а вот при большой, очень заметно, вот и интересно что это слово значит
 

oracloid

совсем кукус
ага, а перед этим добавил пару индексов...

слово outer совершенно ни на что не влияет.
http://www.mysql.ru/docs/man/JOIN.html
 

magic

lancer
Re: вопрос по join

Автор оригинала: alexey84
объясните в чем отличие между left join и left outer join
Существует два типа соединений: INNER JOIN & OUTER JOIN. В обоих случаях, соединение (JOIN) создает связь между двумя таблицами основываясь на паре столбцов (ключей).

INNER JOIN возвращает строки из обеих таблиц только если ключи из обеих таблиц удовлетворяют условию соединения.

OUTER JOIN возвращает все строки из одной таблицы и присоединяет только те строки из другой таблицы, которые удовлетворяют условию соединения. Поэтому результат соединения может содержать пустые значения (NULL).

Еще бывают LEFT OUTER JOIN & RIGHT OUTER JOIN.

LEFT OUTER JOIN выбирает из левой таблицы все значения, удовлетворяющие условию WHERE, независимо от условия в ON, и подсоединяет строки из правой таблицы, довлетворяющие условию в ON. Аналогично работает RIGHT OUTER JOIN.

При использовании внешних соединений, ключевое слово OUTER можно опустить.

Если интересно, как именно работают твои запросы, можно использовать EXPLAIN SELECT ... LEFT OUTER JOIN | EXPLAIN SELECT ... LEFT JOIN и сравнить результат.
 
Сверху