基于国产CPU和OS的加快SQL查询的方法及加快系统技术方案

技术编号:32778514 阅读:15 留言:0更新日期:2022-03-23 19:35
本发明专利技术公开了基于国产CPU和OS的加快SQL查询的方法及加快系统,属于数据库查询技术领域,要解决的技术问题为如何加快SQL查询效率,并代替数据库的多表连接查询与分组聚合查询。包括如下步骤:基于表之间的数据的关联性,将相关联的多个表连接为一个结果集;以分组字段作为分类依据,对结果集中的数据进行分组,得到分组结果集,所述分组结果集为由分组字段相同的数据组成的集合;对于每个分组结果集,对组内数据进行聚合运算,得到分组聚合结果,并汇总所有分组结果集对应的分组聚合结果,得到最终查询结果。最终查询结果。最终查询结果。

【技术实现步骤摘要】
基于国产CPU和OS的加快SQL查询的方法及加快系统


[0001]本专利技术涉及数据库查询
,具体地说是基于国产CPU和OS的加快 SQL查询的方法及加快系统。

技术介绍

[0002][0003]随着国产基础软硬件的蓬勃发展,国产基础软硬件的推广和使用带来了前所未有的机遇。数据库作为生态环境中重要的一环,基于国产操作系统和CPU 的环境下涌现出了多种国产数据库。在国产化环境下,通过更新换代实现信息化系统的功能升级已成为当前企业和政府部门信息化建设的重要方向,由于软硬件系统的不断升级和数据库管理系统的性能不断提高,基于数据库管理系统的应用系统也不断升级。
[0004]数据库查询的一般方法为用sql语言对数据库的单表或者多表查询,对于单表来说只需要简单的select语句即可,但对多表查询而言,则需要用到合并查询、连接查询、子查询等一系列复杂的查询,还要配合索引主键外键等对不同的情况进行针对性的优化,同时对于编程人员也有着较高的要求,就算是对于专业的DBA而言也是一种不小的挑战,国产数据库受限制于服务器硬件和本身软件性能,在这方面尤其突出。现在的国产数据库已可满足大部分业务场景,但对于复杂业务的查询性能与稳定性还有所欠缺。
[0005]在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果。一个业务都会对应多张表,比如:学生和班级,起码两张表。
[0006]在表的连接查询方面有一种现象被称为:笛卡尔积现象。即:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。这就是笛卡尔积现象。但是如果对于数据量较大的多表的关联查询进行统计操作,就更会耗费数据库的资源,对于国产数据库而言,很容易造成数据库的崩溃,且SQL在实现多表的数据筛选和分组聚合(如求和,求差,拼接等)时链接逻辑复杂,可读性差,不易维护。
[0007]如何加快SQL查询效率,并代替数据库的多表连接查询与分组聚合查询,是需要解决的技术问题。

技术实现思路

[0008]本专利技术的技术任务是针对以上不足,提供基于国产CPU和OS的加快SQL 查询的方法及加快系统,来解决如何加快SQL查询效率,并代替数据库的多表连接查询与分组聚合查询的技术问题。
[0009]第一方面,本专利技术的基于国产CPU和OS的加快SQL查询的方法,用于实现多表查询以及分组聚合查询,包括如下步骤:
[0010]基于表之间的数据的关联性,将相关联的多个表连接为一个结果集;
[0011]以分组字段作为分类依据,对结果集中的数据进行分组,得到分组结果集,所述分组结果集为由分组字段相同的数据组成的集合;
[0012]对于每个分组结果集,对组内数据进行聚合运算,得到分组聚合结果,并汇总所有分组结果集对应的分组聚合结果,得到最终查询结果。
[0013]作为优选,基于多表连接模型,基于表之间的数据的关联性,将相关联的多个表连接为一个结果集,所述多表连接模型为:
[0014]选取A1为当前主表,从A2、
……
、An中选取与所述当前主表相关联的一个表作为当前主表关联表;
[0015]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配到所有关联的数据,基于当前主表得到第一结果集;
[0016]以第一结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;
[0017]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有关联的数据,基于当前主表得到第二结果集;
[0018]依次进行如下计算,直至将所述n个表连接为一个结果集:以第i结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;
[0019]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有关联的数据,基于当前主表得到第i+1结果集。
[0020]作为优选,以分组字段作为分类依据,对结果集中的数据进行分组时,基于键值key

value的数据结构,将结果集中所有数据根据分组字段进行分组,以分组字段为key,将相同key值的数据放入同一value中。
[0021]作为优选,对于每个分组结果集,对组内数据进行聚合运算时,将每组 value中的数据进行聚合计算,所述聚合计算包括求和以及计数。
[0022]第二方面,本专利技术的基于国产CPU和OS的SQL查询的加快系统,用于执行如第一方面任一项所述的基于国产CPU和OS的SQL查询的加快方法,所述系统包括:
[0023]多表连接模块,所述多表连接模块用于基于表之间的数据的关联性,将相关联的多个表连接为一个结果集;
[0024]分组模块,所述分组模块用于以分组字段作为分类依据,对结果集中的数据进行分组,得到分组结果集,所述分组结果集为由分组字段相同的数据组成的集合;
[0025]聚合模块,所述聚合模块用于对于每个分组结果集,对组内数据进行聚合运算,得到分组聚合结果,并汇总所有分组结果集对应的分组聚合结果,得到最终查询结果。
[0026]作为优选,所述多表连接模块中配置有多表连接模型,用于基于多表连接模型基于表之间的数据的关联性,将相关联的多个表连接为一个结果集;所述多表连接模型为:
[0027]选取A1为当前主表,从A2、
……
、An中选取与所述当前主表相关联的一个表作为当前主表关联表;
[0028]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配到所有关联的数据,基于当前主表得到第一结果集;
[0029]以第一结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;
[0030]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有
关联的数据,基于当前主表得到第二结果集;
[0031]依次进行如下计算,直至将所述n个表连接为一个结果集:以第i结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;
[0032]对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有关联的数据,基于当前主表得到第i+1结果集。
[0033]作为优选,所述分组模块用于基于键值key

value的数据结构,将结果集中所有数据根据分组字段进行分组,以分组字段为key,将相同key值的数据放入同一value中。
[0034]作为优选,所述聚合模块用于将每组value中的数据进行聚合计算,所述聚合计算包括求和以及计数。
[0035]第三方面,本专利技术的装置,其特征在于,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于国产CPU和OS的加快SQL查询的方法,其特征在于用于实现多表查询以及分组聚合查询,包括如下步骤:基于表之间的数据的关联性,将相关联的多个表连接为一个结果集;以分组字段作为分类依据,对结果集中的数据进行分组,得到分组结果集,所述分组结果集为由分组字段相同的数据组成的集合;对于每个分组结果集,对组内数据进行聚合运算,得到分组聚合结果,并汇总所有分组结果集对应的分组聚合结果,得到最终查询结果。2.根据权利要求1所述的基于国产CPU和OS的加快SQL查询的方法,其特征在于基于多表连接模型,基于表之间的数据的关联性,将相关联的多个表连接为一个结果集,所述多表连接模型为:设定有n个表,分别为A1、A2、
……
、An,上述n个表之间存在关联性;选取A1为当前主表,从A2、
……
、An中选取与所述当前主表相关联的一个表作为当前主表关联表;对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配到所有关联的数据,基于当前主表得到第一结果集;以第一结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有关联的数据,基于当前主表得到第二结果集;依次进行如下计算,直至将所述n个表连接为一个结果集:以第i结果集为当前主表,从剩余表中选取与所述当前主表相关联的一个表作为当前主表关联表,所述剩余表为上述n个表中未曾作为主表和主表关联表的表;对于当前主表中每个数据,遍历当前主表关联表,从当前主表关联表中匹配所有关联的数据,基于当前主表得到第i+1结果集。3.根据权利要求1所述的基于国产CPU和OS的加快SQL查询的方法,其特征在于以分组字段作为分类依据,对结果集中的数据进行分组时,基于键值key

value的数据结构,将结果集中所有数据根据分组字段进行分组,以分组字段为key,将相同key值的数据放入同一value中。4.根据权利要求3所述的基于国产CPU和OS的加快SQL查询的方法,其特征在于对于每个分组结果集,对组内数据进行聚合运算时,将每组value中的数据进行聚合计算,所述聚合计算包括求和以及计数。5.基于国产CPU和OS的SQL查询的加快系统,其特征在于用于执行如权利要求1

4任一项所述的基于国产CPU和OS的SQL查询的加快方法,所述系统包括:多表连接模块,所述多表连接模块用于基于表之间的数据的关联性,将相关联...

【专利技术属性】
技术研发人员:刘厚亮王松
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1