2012-11-06 83 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