SELECT COUNT(*) AS count
FROM `tablea` AS p
LEFT JOIN tableb AS fone ON p.come_id=fone.id
LEFT JOIN tablec AS fl ON p.come_id=fl.come_id
LEFT JOIN tableb AS ftwo ON fl.leave_id=ftwo.id
WHERE
p.code='sss' AND
(fone.num LIKE '%sv122%' OR ftwo.num LIKE '%sv122%' OR p.pnum LIKE '%sv122%') AND
(fone.come_time BETWEEN 1431619200 AND 1431705599 OR ftwo.leave_time BETWEEN 1431619200 AND 1431705599);
分别都有索引,但是JOIN同一张表时 他扫描了全部表 这种SQL该怎么优化 谢谢
FROM `tablea` AS p
LEFT JOIN tableb AS fone ON p.come_id=fone.id
LEFT JOIN tablec AS fl ON p.come_id=fl.come_id
LEFT JOIN tableb AS ftwo ON fl.leave_id=ftwo.id
WHERE
p.code='sss' AND
(fone.num LIKE '%sv122%' OR ftwo.num LIKE '%sv122%' OR p.pnum LIKE '%sv122%') AND
(fone.come_time BETWEEN 1431619200 AND 1431705599 OR ftwo.leave_time BETWEEN 1431619200 AND 1431705599);
分别都有索引,但是JOIN同一张表时 他扫描了全部表 这种SQL该怎么优化 谢谢

