MYSQL:左连接运行缓慢
我有两张桌子: 然后我左键连接到两个表:MYSQL:左连接运行缓慢,mysql,indexing,left-join,explain,Mysql,Indexing,Left Join,Explain,我有两张桌子: 然后我左键连接到两个表: 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
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
,如果我在查询中提到它,数据不会出现,但是如果我删除它,数据会出现(我的意思是不做左连接
)
我的提问是否不够好?这是我的解释
:
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
有没有什么特别的原因让你加入了一个类似于的条款而不是平等条款
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将极大地帮助join操作
CREATE INDEX inspection_report_nik ON inspection_report (NIK);
我试过你的答案,然后在我的phpmyadmin中试一下,这样效果会更快。但是,它仍然没有出现在我的数据表中(在我的firebug中没有错误)。我们需要查看javascript和您拥有的任何服务器端代码