mysql - 防止 'ALL' 输入 Mysql 解释 SQL

标签 mysql sql-server phpmyadmin explain

我试图理解 Mysql 解释,我读到“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   

如您所见,生产计划详细信息的类型为“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 - 防止 'ALL' 输入 Mysql 解释 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655448/

相关文章:

SQL Server : multi-join with tuple IN clause

phpmyadmin进程id很高并且增长很快,这正常吗?

MySQL查询排序两列,一个ASC另一个DESC

php - MySQL 忽略 NOT NULL 约束

c# - SQL 连接并按用户过滤 - 多重连接

php - 我想获得特定列值mysql的排名

sql - 如何使用 PARSENAME

php - 如何在 phpmyadmin 中重新启动自动增量?

mysql - MySQL中每个单词(utf8)的大写首字母

php - 每个用户一个数据库(mysql)连接是否足够?