2012-11-06 142 views
0

我有两个表:MYSQL:LEFT JOIN运行缓慢

table 1

table 2

话,我左连接到两个表:

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的数据表即使数据不显示,插件运行速度也很慢。奇怪的一点是,在这个领域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); 
+0

我试过了你的答案,然后在我的phpmyadmin试试它,然后它的工作更快。但是,它仍然没有出现在我的数据表中(在我的萤火虫中没有错误)。 – nunu

+0

那么你的问题可能与该插件。我们需要看到你有 – akatakritos

+0

http://pastebin.com/0CK5hkqZ和服务器端http://pastebin.com/Up246Hr6的JavaScript和任何服务器端代码。 – nunu