[发明专利]基于逻辑代数的SQL查询语句优化方法在审
申请号: | 202110884674.2 | 申请日: | 2021-08-03 |
公开(公告)号: | CN113505132A | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 鲁昕 | 申请(专利权)人: | 杭州普数软件有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/242;G06F16/2453 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 葛钟 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 逻辑 代数 sql 查询 语句 优化 方法 | ||
本申请涉及一种基于逻辑代数的SQL查询语句优化方法,通过合取范式的逻辑定理,对SQL查询语句进行优化,将查询语句中的OR逻辑和AND逻辑作为逻辑子句的分割定义点,抽象成为数学公式中的,将一个查询语句视作一个命题合集,各个用OR和AND连接的查询语句作为命题子句,基于逻辑代数原理检测和消除命题逻辑中的冗余子句,将冗余命题进行化简。如此,在逻辑代数的理论支持下,在数据结构上使用树形结构,算法上使用动态规划的解决方案对多个交叠的子逻辑进行优化,使得查询的语句从逻辑上优化,减少无必要的逻辑查询或是整合优化查询的条件,降低数据库的单个语句的查询的复杂度,提高检索效率,从而达到对整体软件速度的提升。
技术领域
本申请涉及软件开发领域,尤其涉及一种基于逻辑代数的SQL查询语句优化方法。
背景技术
在数学领域中,命题逻辑的冗余性的问题已经得到了广泛的研究,尤其是在理论的方向上。
而在实际应用中,在针对长度较长的数据库查询语句时,会耗费大量的IO时间以及缓存解析时间和查询数据的时间,由于是系统自动生成的查询语句,我们无法手动去控制查询的语句的逻辑问题,而这样的语句充斥大量的冗余查询条件,导致存在查询资源和时间成本高,查询效率低的问题,降低整体软件速度。
发明内容
本申请提供一种基于逻辑代数的SQL查询语句优化方法,以解决现有技术中,在进行SQL查询时,查询语句存在大量的冗余查询条件,导致查询资源和时间成本高,查询效率低,降低整体软件速度的问题。
本申请的上述目的是通过以下技术方案实现的:
本申请实施例提供的基于逻辑代数的SQL查询语句优化方法包括:
获取查询语句,并将所述查询语句中的OR逻辑和AND逻辑作为逻辑子句的分割定义点,构建得到多颗树状结构的数据结构的森林;
基于逻辑代数运算原理,对所述森林中的单子树进行优化;
将优化后的多个树的根节点进行逻辑合并,得到最优逻辑查询计划。
进一步的,所述将所述查询语句中的OR逻辑和AND逻辑作为逻辑子句的分割定义点,构建得到多颗树状结构的数据结构的森林,包括:
将查询语句的OR逻辑抽象为数据公式中的或,将查询语句的AND逻辑抽象为数学公式中的与;
将一个查询语句定义为一个命题合集,将用OR逻辑和AND逻辑连接的查询语句作为命题子句;
将第一级别中的或作为树与树之间的分割,构建得到多个树状结构的数据结构森林。
进一步的,所述单子树包括复杂命题形式和单命题形式。
进一步的,所述基于逻辑代数运算原理,对所述森林中的单子树进行优化,包括:
基于逻辑代数的分配率,将复合命题进行拆分。
进一步的,所述基于逻辑代数运算原理,对所述森林中的单子树进行优化,还包括:
当存在复合命题与单命题为且时,直接将该单命题作为化简结果。
进一步的,所述基于逻辑代数运算原理,对所述森林中的单子树进行优化,还包括:
将二类子节点进行简化升级为一类叶子节点。
进一步的,所述基于逻辑代数运算原理,对所述森林中的单子树进行优化,还包括:
从最底节点开始,进行层级的简化。
进一步的,所述将优化后的多个树的根节点进行逻辑合并,得到最优逻辑查询计划,包括:
将多个树的根结点进行逻辑合并;
检测所述根节点之间是否存在一个大集合与一个小集合的OR逻辑;
若存在,将所述小集合简化,将大集合直接作为该大集合与该小集合OR逻辑的结果。
本申请的实施例提供的技术方案可以包括以下有益效果:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州普数软件有限公司,未经杭州普数软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110884674.2/2.html,转载请声明来源钻瓜专利网。