URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID13
Нить номер: 889
[ Назад ]

Исходное сообщение
"mysql joins how it works"

Отправлено tsolodov , 18-Июл-14 17:25 
Всем привет.

Хочется понять как работает mysql:
допустим есть 2 таблицы по 6 000 000 записей.

a:
id (PK)
filed1
filed2
filed3


b:
id(PK)
filed1
filed2
filed3

select * from a
join b on a.filed2 = b.filed2

Если я буду делать join этих таблиц по НЕ индексированным полям,

Я правильно понимаю что будет работать примерно следующий алгоритм:
для каждого поля первой таблицы будет полный обход другой таблицы(full scan) на предмет сопоставления полей, и того получится 6 000 000 * 6 000 000 проходов внутри mysql server?



Содержание

Сообщения в этом обсуждении
"mysql joins how it works"
Отправлено arka , 20-Июл-14 19:03 
Примерно так и будет. Посмотрите, что выдаст этот запрос с EXPLAIN, и перемножьте значения поля rows. Также надо проверять поле type, если видим ALL, то значит идёт полный скан. Кроме индексов ещё бы и соответствие типов связываемых полей учитывать.
Вроде бы так.

"mysql joins how it works"
Отправлено tsolodov , 21-Июл-14 15:36 
> Примерно так и будет. Посмотрите, что выдаст этот запрос с EXPLAIN, и
> перемножьте значения поля rows. Также надо проверять поле type, если видим
> ALL, то значит идёт полный скан. Кроме индексов ещё бы и
> соответствие типов связываемых полей учитывать.
> Вроде бы так.

Спасибо!