我正在尝试理解Mysql Explain并且我读到类型“ALL”是性能最差的。我刚写了一个非常简单的sql,其中有一个左连接
SELECT * FROM production_plan_header pph LEFT JOIN production_plan_details ppd ON ppd.ppd_header_id = pph.pph_id WHERE pph.pph_id =1
如果我对此使用EXPLAIN,我会得到以下内容。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE pph const PRIMARY PRIMARY 4 const 1
1 SIMPLE ppd ALL ppd_header_id NULL NULL NULL 7
如您所见,production_plan_details的类型为“ALL”。行显示表(7)中的行总数。 ppd_header_id列已编制索引。有没有办法从我的sql语句中阻止这个“ALL”?
答案 0 :(得分:0)
我不确定我是否正确地提出了您的问题,但是如果您要删除具有Type =" ALL"的行,那么您可以像下面一样编写查询。
SELECT *
FROM production_plan_header pph
LEFT JOIN production_plan_details ppd
ON ppd.ppd_header_id = pph.pph_id
WHERE pph.pph_id = 1
AND ppd.type <> "ALL"