Using join buffer (block nested loop)
означает, что объединение не может использовать индекс, и оно выполняет сложный путь. Другими словами, он выполняет сканирование таблицы в объединенной таблице.
Оптимизатор предполагает, что в объединенной таблице может быть больше строк, поэтому он должен будет загружать строки в буфер в памяти в пакетах, затем сравните с этими строками в буфере, чтобы отфильтровать те, которые соответствуют условию соединения. Затем очистите буфер объединения, извлеките следующий блок строк и повторите попытку.
Если вы видите Using join buffer (block nested loop)
в своем отчете EXPLAIN, вы должны выяснить, можете ли вы добавить индекс в объединенную таблицу, чтобы разрешить это искать соответствующие строки более эффективно. Это похоже на процесс определения наилучшего индекса для первой таблицы в вашем запросе.