0

私は2つのテーブルを持っています:

表1

表 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 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
4

1 に答える 1

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);
于 2012-11-06T02:23:59.333 に答える