MYSQL: LEFT JOIN работать медленно
У меня есть две таблицы:
Затем я присоединяюсь к обеим таблицам слева:
SELECT DATE(`Inspection_datetime`) AS Date, `Line`,`Model`, `Lot_no`,
COUNT(A.`Serial_number`) AS Qty,B.`name`
FROM `inspection_report` AS A
LEFT JOIN `Employee` AS B
ON A.`NIK` LIKE B.NIK
GROUP BY Date , A.Model ,A.Lot_no,A.Line,B.`name`
ORDER BY Date DESC
Этот запрос заставляет мой плагин Jquery DataTable работать очень медленно, даже если данные не отображаются. Странная точка в этом поле B.name
, если я упомяну это в запросе, данные не появятся, но если я удалю их, данные появятся (я имею в виду не делать LEFT JOIN
).
Не достаточно ли мой запрос хорош? это мой EXPLAIN
:
TABLE 1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE inspection_report ALL NULL NULL NULL NULL 334518
TABLE 2
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE Employee ALL NULL NULL NULL NULL 100
QUERY
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE B ALL NULL NULL NULL NULL 100 Using temporary; Using filesort
1 SIMPLE A ALL NULL NULL NULL NULL 334520 Using where; Using join buffer
1 ответ
Любая особая причина, по которой вы присоединяетесь к LIKE
пункт вместо равенства?
SELECT DATE(`Inspection_datetime`) AS Date, `Line`,`Model`, `Lot_no`,
COUNT(A.`Serial_number`) AS Qty,B.`name`
FROM `inspection_report` AS A
LEFT JOIN `Employee` AS B
ON A.`NIK` = B.NIK
GROUP BY Date , A.Model ,A.Lot_no,A.Line,B.`name`
ORDER BY Date DESC
должен дать лучшие результаты.
Кроме того, добавление индекса в A.NIK должно значительно облегчить операцию соединения.
CREATE INDEX inspection_report_nik ON inspection_report (NIK);