Всем привет.Хочется понять как работает mysql:
допустим есть 2 таблицы по 6 000 000 записей.a:
id (PK)
filed1
filed2
filed3
b:
id(PK)
filed1
filed2
filed3select * from a
join b on a.filed2 = b.filed2
Если я буду делать join этих таблиц по НЕ индексированным полям,
Я правильно понимаю что будет работать примерно следующий алгоритм:
для каждого поля первой таблицы будет полный обход другой таблицы(full scan) на предмет сопоставления полей, и того получится 6 000 000 * 6 000 000 проходов внутри mysql server?
Примерно так и будет. Посмотрите, что выдаст этот запрос с EXPLAIN, и перемножьте значения поля rows. Также надо проверять поле type, если видим ALL, то значит идёт полный скан. Кроме индексов ещё бы и соответствие типов связываемых полей учитывать.
Вроде бы так.
> Примерно так и будет. Посмотрите, что выдаст этот запрос с EXPLAIN, и
> перемножьте значения поля rows. Также надо проверять поле type, если видим
> ALL, то значит идёт полный скан. Кроме индексов ещё бы и
> соответствие типов связываемых полей учитывать.
> Вроде бы так.Спасибо!