防止Mysql中的'ALL'类型解释SQL

时间:2018-02-07 03:20:06

标签: mysql sql-server phpmyadmin explain

我正在尝试理解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”?

1 个答案:

答案 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"