Mysql不是空行为

Mysql不是空行为,mysql,null,sql-execution-plan,notnull,Mysql,Null,Sql Execution Plan,Notnull,为什么notnull条件强制Mysql检查整个表,而不是只查看子查询结果 为什么在本次查询和上一次我尝试在某个子查询后进行筛选时都会解释相同的问题 这不是特定于非空的。查询规划师认为这样会更有效。 当超过50%的行匹配时,使用索引跳过通常会更快。 您可以分析表格,以确保计划员拥有最新信息,或者强制索引,如果您认为更了解的话 这个查询只是为了支持这个问题,还是实际在使用中?创建一个临时表sub并对其进行过滤并不理想。真正的查询更复杂,如果我添加not is NULL条件,它会得到很好的解决。因

为什么notnull条件强制Mysql检查整个表,而不是只查看子查询结果

为什么在本次查询和上一次我尝试在某个子查询后进行筛选时都会解释相同的问题


这不是特定于
非空的
。查询规划师认为这样会更有效。
当超过50%的行匹配时,使用索引跳过通常会更快。
您可以
分析表格
,以确保计划员拥有最新信息,或者
强制索引
,如果您认为更了解的话


这个查询只是为了支持这个问题,还是实际在使用中?创建一个临时表
sub
并对其进行过滤并不理想。

真正的查询更复杂,如果我添加not is NULL条件,它会得到很好的解决。因此,我尝试将其作为子查询并按NOTNULL进行筛选,但它不起作用,Mysql EXPLAIN显示,如果我将NOTNULL添加到子查询或父查询中,则没有区别,我无法理解原因。更新后,使用SCREESHOT,您不应该发布代码的图像,您应该参考这篇文章,而不仅仅是代码,而不是EXPLAIN命令结果,当用作图像时,它看起来更好,我试着将其用作代码,但问题看起来一团糟,对此表示抱歉。