SQL优化| IS NOT NULL 优化与 NOT NULL 查询慢优化
在SQL查询时,SQL语句中由于使用了 IS NOT NULL ,导致查询时间过长,数据表有180W条数据,查询的字段上已经有普通索引,我们使用简单的sql查询这个cfErpPayNumber 不是空的记录,耗时需要1843ms,这是非常头疼的,
查看执行计划,是全表扫描
这里为了加快查询效率,我们需要加入函数索引,
函数索引是Oracle数据库中的一种特殊类型的索引,它允许基于表达式或函数的结果创建索引。与传统的基于列的索引不同,函数索引可以包含对列执行的操作结果,例如大写转换、数学计算或其他复杂的表达式。
主要特点:
1、提高查询性能:通过在查询中使用函数索引,可以显著提高涉及复杂表达式的查询性能。
2、支持复杂表达式:可以在索引中包含对列的函数调用或表达式,而不仅仅是列本身。
3、透明性:对于应用程序来说,函数索引的存在是透明的,即不需要修改查询语句来利用这些索
这里我们加入一个函数索引后再去查询,仅仅耗时 34 ms,相比原来的1800ms提升相当大,
查看执行计划,可以看到走的是我们刚才创建的函数索引
NVL2(表达式1,表达式2,表达式3)
如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
例如 NVL2(comm,'sal+comm',sal)
NVL2函数测试comm
如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。
如果我们希望用普通的字段查,也可以继续加普通的索引,然后使用EXISTS 来过滤
linux下的docker操作命令及异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具