我试图了解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”?

最佳答案

我不确定我是否正确回答了您的问题,但是如果您要删除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"

关于mysql - 在MySQL中防止'ALL'类型解释SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48655448/

10-12 02:48