Не существует «лучшего» или «худшего» типа соединения. Они имеют разное значение и должны использоваться в зависимости от этого.
В вашем случае, вы , вероятно , не имеют сотрудников с не work_log (ни одной строки в этой таблице), так LEFT JOINи JOINбудут эквивалентны в результатах. Однако, если бы у вас была такая вещь (новый сотрудник без зарегистрированного журнала work_log), то JOINэтот сотрудник пропустил бы пустошь, в то время как при левом соединении (первая таблица которого сотрудники) показывали бы все из них, и при наличии нуля в полях из work_log не совпадают.

Опять же, производительность является второстепенной вещью для правильности запроса. Некоторые люди говорят, что вы не должны использовать LEFT JOINs. Это правда, что LEFT JOIN заставляет оптимизатор выполнить запрос в одном конкретном порядке, предотвращая некоторые оптимизации (переупорядочение таблиц) в некоторых случаях. Вот один пример . Но вы не должны выбирать одно из другого, если правильность / смысл жертвуются, так как ВНУТРЕННЕЕ СОЕДИНЕНИЕ не хуже по своей сути. Остальные обычные оптимизации применяются как обычно.
Таким образом, не используйте, LEFT JOINесли вы действительно имеете в виду INNER JOIN.
В MySQL CROSS JOIN, INNER JOINи JOINодни и те же. В стандартном и семантическом CROSS JOINвыражениях a - это INNER JOINбез ONусловия, поэтому вы получаете каждую комбинацию строк между таблицами.
У вас есть примеры всех семантических типов объединения в Википедии . На практике в MySQL мы склонны писать только JOINи LEFT JOIN.