mysql join - как работает поток? - PullRequest
       24

mysql join - как работает поток?

0 голосов
/ 26 февраля 2012

с использованием Mysql Server 5.5.

допустим, у меня есть две идентичные таблицы с именами foo1 и foo2 со следующими столбцами:

фамилия варчар (20) idnum int (20)

и я хочу объединить обе таблицы, где idnum = 5

Теперь, если я реализую его, используя следующий код:

select * from foo1 
 join foo2 on foo1.idnum=foo2.idum
 where foo1.idnum5;

Вначале он объединяет все строки в таблицах и только затем фильтрует где и возвращает строку с idnum5?

если это правда, поэтому я, вероятно, должен реализовать это так:

select * from foo1
 join foo2 on foo2.idnum=5
 where foo1.idnum=5

эта реализация - более быстрое соединение? есть ли разница?

Я пытаюсь понять, как это на самом деле работает, чтобы узнать, является ли это одним из способов оптимизации моих запросов на присоединение.

любая информация по этому вопросу будет принята с благодарностью.

спасибо!

1 Ответ

0 голосов
/ 26 февраля 2012

Поток для объединений просто ПОДГОТОВИТЬ отношения между таблицами для окончательной квалификации.Предложение WHERE фактически запускает применение, какие записи извлекаются как ПЕРВИЧНЫЕ и, мы надеемся, структурированы так, чтобы использовать преимущества индексов для оптимизации ограниченных записей из таблиц, на которые есть ссылки в части WHERE.применяются объединения (или левое соединение / правое соединение), и если они найдены в соответствующей записи, разрешить включение этих записей, в противном случае исключить из основного набора данных предложение WHERE, которое разрешено выполнять.

...