Итак, у меня есть база данных с около 40000 записей, и у каждой записи есть два поля идентификатора, которые относятся к разным таблицам. Пример запроса будет:
SELECT a.*, c.full_name, em.full_name FROM records AS r JOIN customers c ON a.customer_id = c.customer_id JOIN employees em ON a.employee_id = em.employee_id
Этот запрос занимает около 5 секунд.
Когда я пытаюсь EXPLAIN
запрос, я вижу, что таблица клиентов имеет type
eq_ref
, в то время как таблица сотрудников имеет type
ALL
, хотя оба условия соединения ссылаются на первичный ключ соединенный стол Это явно сильно замедляет запрос, поскольку EXPLAIN
показывает, что таблица клиентов использует только 1 строку, а таблица сотрудников - 474 строки. Почему таблица сотрудников не объединяется как type
из eq_ref
и использует только 1 строку?