查看“IS NULL 优化”的源代码
←
IS NULL 优化
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
MySQL可以对 col_name IS NULL 进行与 col_name = constant_value 相同的优化。例如,MySQL可以使用索引和范围来搜索 IS NULL 的 NULL 值。 示例: SELECT * FROM tbl_name WHERE key_col IS NULL; SELECT * FROM tbl_name WHERE key_col <=> NULL; SELECT * FROM tbl_name WHERE key_col=const1 OR key_col=const2 OR key_col IS NULL; 如果WHERE子句包括对一个声明为NOT NULL的列的col_name IS NULL条件,那么该表达式会被优化掉。但在某些情况下,当该列可能产生NULL值时(例如,如果它来自LEFT JOIN右侧的表),此优化不会发生。 MySQL还可以对col_name = expr OR col_name IS NULL这种常见的形式进行优化,该形式在解决子查询时经常出现。当使用此优化时,EXPLAIN将显示ref_or_null。 这种优化可以处理任何关键部分的一个IS NULL。 以下是一些查询示例,假设在表t2的列a和b上有索引: SELECT * FROM t1 WHERE t1.a=expr OR t1.a IS NULL; SELECT * FROM t1, t2 WHERE t1.a=t2.a OR t2.a IS NULL; SELECT * FROM t1, t2 WHERE (t1.a=t2.a OR t2.a IS NULL) AND t2.b=t1.b; SELECT * FROM t1, t2 WHERE t1.a=t2.a AND (t2.b=t1.b OR t2.b IS NULL); SELECT * FROM t1, t2 WHERE (t1.a=t2.a AND t2.a IS NULL AND ...) OR (t1.a=t2.a AND t2.a IS NULL AND ...); ref_or_null首先对引用键进行读取,然后单独搜索具有NULL键值的行。 该优化只能处理一个IS NULL级别。在下面的查询中,MySQL仅在表达式(t1.a=t2.a AND t2.a IS NULL)上使用键查找,并且无法使用b上的键部分: SELECT * FROM t1, t2 WHERE (t1.a=t2.a AND t2.a IS NULL) OR (t1.b=t2.b AND t2.b IS NULL);
返回至“
IS NULL 优化
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息