一种数据库查询的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:32181609 阅读:15 留言:0更新日期:2022-02-08 15:43
本申请实施例公开了一种数据库查询的方法、装置、电子设备及存储介质,包括:利用抽象语法树解析数据库查询语句,并按照单个字段维度将数据库查询语句拆分为查询子任务;针对每一个查询子任务,根据第一目标字段和第一查询条件判断已有的查询结果集是否可用;如果已有的查询结果集可用,则从缓存中获取查询子任务的数据库查询结果;否则,通过数据库获取查询子任务的数据库查询结果;将所有的查询子任务的数据库查询结果进行合并,作为数据库查询语句的查询结果。应用本申请实施例方案,可以最大限度利用已有的查询结果,减少数据库访问的几率,提高数据库查询效率。提高数据库查询效率。提高数据库查询效率。

【技术实现步骤摘要】
一种数据库查询的方法、装置、电子设备及存储介质


[0001]本申请涉及计算机
,尤其涉及一种数据库查询的方法,一种数据库查询的装置,一种电子设备,一种计算机可读存储介质,一种计算机程序产品。

技术介绍

[0002]随着存储的数据量越来越大,可以采用海量数据的联机分析处理(Online Analytical Processing,简称为OLAP)来查询数据。实际应用中,某些查询的字面含义不相同但实际相同时,现有技术无法直接利用已有的查询结果,需要重新查询数据库,导致数据库查询的效率低下。

技术实现思路

[0003]针对上述现有技术,本专利技术实施例公开一种数据库查询的方法,可以克服数据库查询效率低的缺陷,达到充分利用缓存中的数据库查询结果,提高数据库查询效率的目的。
[0004]本申请实施例中的一种数据库查询的方法具体为:
[0005]利用抽象语法树解析数据库查询语句,并按照单个字段维度将所述数据库查询语句拆分为查询子任务,每一个所述查询子任务包括第一目标字段和第一查询条件,所述第一目标字段表示需要查询的单个字段,所述第一查询条件表示查询所述第一目标字段时的筛选条件,所述筛选条件包括字段名、运算符和运算数;
[0006]针对每一个所述查询子任务,根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用,所述已有的查询结果集是先前的数据库查询结果的集合,且按照一个字段对应一个查询结果子集的方式保存在缓存中;如果所述已有的查询结果集可用,则从所述缓存中获取所述查询子任务的数据库查询结果;否则,通过数据库获取所述查询子任务的数据库查询结果;
[0007]将所有的所述查询子任务的数据库查询结果进行合并,作为所述数据库查询语句的查询结果。
[0008]进一步地,所述根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用的步骤包括:
[0009]将所述已有的查询结果集中的一个查询结果子集作为第一查询结果子集,将所述第一查询结果子集对应的字段作为第二目标字段,将所述第一查询结果子集对应的查询条件作为第二查询条件;
[0010]将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较,如果相同,则继续执行后续步骤;否则确定所述第一查询结果子集不可用,将下一个查询结果子集作为新的第一查询结果子集,并返回到所述将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较的步骤,直到遍历完所有的所述查询结果子集,结束所述根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用的步骤;
[0011]判断所述查询子任务中的所述第一查询条件是否包含于所述第一查询结果子集对应的第二查询条件中,如果是,则确定所述第一查询结果子集可用;否则,确定所述第一查询结果子集不可用,将下一个查询结果子集作为新的第一查询结果子集,并返回到所述将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较的步骤,直到遍历完所有的所述查询结果子集。
[0012]进一步地,所述判断查询子任务中的所述第一查询条件是否包含于所述第一查询结果子集对应的第二查询条件中的步骤包括:
[0013]判断所述第一查询条件的个数与所述第二查询条件的个数是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;
[0014]判断所述第一查询条件所包括的字段名与所述第二查询条件所包括的字段名是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;
[0015]将所述第一查询条件中所述第一目标字段所属的查询条件作为第三查询条件,将所述第一查询条件中的其他查询条件作为第四查询条件;将所述第二查询条件中所述第二目标字段所属的查询条件作为第五查询条件,将所述第二查询条件中的其他查询条件作为第六查询条件;所述第三查询条件中的字段名与所述第五查询条件中的字段名相同;
[0016]判断所述第四查询条件与所述第六查询条件是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;
[0017]判断所述第三查询条件中的运算符与所述第五查询条件中的运算符是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;
[0018]判断所述第三查询条件中的运算数是否包含于所述第五查询条件中,如果是,则所述第一查询条件包含于所述第二查询条件中;否则,确定所述第一查询条件未包含于所述第二查询条件中。
[0019]进一步地,所述判断所述第三查询条件中的运算数是否包含于所述第五查询条件中的步骤包括:
[0020]如果所述第三查询条件中的运算符为“>”或“>=”,那么所述第三查询条件中的运算数小于所述第五查询条件中的运算数时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;
[0021]如果所述第三查询条件中的运算符为“<”或“<=”,那么所述第三查询条件中的运算数大于所述第五查询条件中的运算数时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;
[0022]如果所述第三查询条件中的运算符为“==”或“<>”,那么所述第三查询条件中的运算数不等于所述第五查询条件中的运算数时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;
[0023]如果所述第三查询条件中的运算符为“BETWEEN”,那么所述第三查询条件中的运
算数的取值范围大于所述第五查询条件中的运算数的取值范围时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;
[0024]如果所述第三查询条件中的运算符为“like”,那么所述第三查询条件中的运算数的取值范围大于所述第五查询条件中的运算数的取值范围时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中。
[0025]进一步地,所述将所有的所述查询子任务的数据库查询结果进行合并,作为所述数据库查询语句的查询结果的步骤之后,该方法进一步包括:
[0026]判断所述数据库查询语句的查询结果是否可以与所述已有的查询结果集合并,如果可以合并,则将所述数据库查询语句的查询结果与所述已有的查询结果集合并;否则,将所述数据库查询语句的查询结果按照一个字段对应一个查询结果子集的方式保存在缓存中。
[0027]进一步地,所述判断所述数据库查询语句的查询结果是否可以与所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库查询的方法,其特征在于,该方法包括:利用抽象语法树解析数据库查询语句,并按照单个字段维度将所述数据库查询语句拆分为查询子任务,每一个所述查询子任务包括第一目标字段和第一查询条件,所述第一目标字段表示需要查询的单个字段,所述第一查询条件表示查询所述第一目标字段时的筛选条件,所述筛选条件包括字段名、运算符和运算数;针对每一个所述查询子任务,根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用,所述已有的查询结果集是先前的数据库查询结果的集合,且按照一个字段对应一个查询结果子集的方式保存在缓存中;如果所述已有的查询结果集可用,则从所述缓存中获取所述查询子任务的数据库查询结果;否则,通过数据库获取所述查询子任务的数据库查询结果;将所有的所述查询子任务的数据库查询结果进行合并,作为所述数据库查询语句的查询结果。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用的步骤包括:将所述已有的查询结果集中的一个查询结果子集作为第一查询结果子集,将所述第一查询结果子集对应的字段作为第二目标字段,将所述第一查询结果子集对应的查询条件作为第二查询条件;将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较,如果相同,则继续执行后续步骤;否则确定所述第一查询结果子集不可用,将下一个查询结果子集作为新的第一查询结果子集,并返回到所述将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较的步骤,直到遍历完所有的所述查询结果子集,结束所述根据所述第一目标字段和所述第一查询条件判断已有的查询结果集是否可用的步骤;判断所述查询子任务中的所述第一查询条件是否包含于所述第一查询结果子集对应的第二查询条件中,如果是,则确定所述第一查询结果子集可用;否则,确定所述第一查询结果子集不可用,将下一个查询结果子集作为新的第一查询结果子集,并返回到所述将所述查询子任务中的所述第一目标字段和所述第一查询结果子集对应的所述第二目标字段进行比较的步骤,直到遍历完所有的所述查询结果子集。3.根据权利要求2所述的方法,其特征在于,所述判断查询子任务中的所述第一查询条件是否包含于所述第一查询结果子集对应的第二查询条件中的步骤包括:判断所述第一查询条件的个数与所述第二查询条件的个数是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;判断所述第一查询条件所包括的字段名与所述第二查询条件所包括的字段名是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;将所述第一查询条件中所述第一目标字段所属的查询条件作为第三查询条件,将所述第一查询条件中的其他查询条件作为第四查询条件;将所述第二查询条件中所述第二目标字段所属的查询条件作为第五查询条件,将所述第二查询条件中的其他查询条件作为第六查询条件;所述第三查询条件中的字段名与所述第五查询条件中的字段名相同;
判断所述第四查询条件与所述第六查询条件是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;判断所述第三查询条件中的运算符与所述第五查询条件中的运算符是否相同,如果相同,则继续执行后续步骤;否则,确定所述第一查询条件未包含于所述第二查询条件中;判断所述第三查询条件中的运算数是否包含于所述第五查询条件中,如果是,则所述第一查询条件包含于所述第二查询条件中;否则,确定所述第一查询条件未包含于所述第二查询条件中。4.根据权利要求3所述的方法,其特征在于,所述判断所述第三查询条件中的运算数是否包含于所述第五查询条件中的步骤包括:如果所述第三查询条件中的运算符为“>”或“>=”,那么所述第三查询条件中的运算数小于所述第五查询条件中的运算数时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;如果所述第三查询条件中的运算符为“<”或“<=”,那么所述第三查询条件中的运算数大于所述第五查询条件中的运算数时,则确定所述第三查询条件中的运算数未包含于所述第五查询条件中;否则确定所述第三查询条件中的运算数包含于所述第五查询条件中;如果所述第三查询条件中的运算符为“==”或“&...

【专利技术属性】
技术研发人员:赵英男
申请(专利权)人:北京房江湖科技有限公司
类型:发明
国别省市:

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

1