在 Mysql Explain SQL 中防止 'ALL' 类型
Posted
技术标签:
【中文标题】在 Mysql Explain SQL 中防止 \'ALL\' 类型【英文标题】:Preventing 'ALL' Type in Mysql Explain SQL在 Mysql Explain SQL 中防止 'ALL' 类型 【发布时间】:2018-02-07 03:20:05 【问题描述】:我正在尝试理解 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】:我不确定我是否正确地回答了您的问题,但如果您想删除 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"
【讨论】:
谢谢,但我的问题是,我能否从简单的 sql 中阻止“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 ”。我读到使用索引是可能的。刚刚学习编写高效的sql。谢谢以上是关于在 Mysql Explain SQL 中防止 'ALL' 类型的主要内容,如果未能解决你的问题,请参考以下文章