一种关系数据库中数据查询的方法技术

技术编号:36908150 阅读:23 留言:0更新日期:2023-03-18 09:26
本发明专利技术涉及关系数据库管理技术领域,提供一种关系数据库中数据查询的方法,包括:将用户数据查询的的输入文本解析为数据表达式,对解析获得的数据表达式进行语法验证;遍历解析通过语法验证的数据表达式,生成指令数组,将生成的指令数组发送至查询计划;执行查询计划阶段,根据查询计划中的指令数组执行数据表达式,获得查询结果返回至用户。根据本发明专利技术示例性实施例的关系数据库中数据查询的方法,可以通过将关系数据库中采用递归迭代方式计算表达式优化为解释执行指令的方式,显著减小数据库程序运行时的内存大小;提高关系数据库中计算表达式的效率,进而提高关系数据库中数据查询和管理的效率。询和管理的效率。询和管理的效率。

【技术实现步骤摘要】
一种关系数据库中数据查询的方法


[0001]本专利技术涉及关系数据库管理
,尤其涉及一种关系数据库中数据查询的方法。

技术介绍

[0002]在典型的关系数据库管理系统中处理一个查询,一般包括三个阶段:词法语法分析阶段,该阶段将用户的输入文本(SQL)转化成一个适用于数据库内部的数据结构,一般称为语法解析树,并验证语法解析树的正确性,得到一个表示SQL的语法解析树,其实质是将用户的输入文本转换为数据库内部的数据表达式;查询优化阶段,该阶段基于规则以及物理代价将前一个阶段的语法解析树进行优化,生成一个最优的查询计划,该阶段对上一阶段的数据表达式不做特殊处理,将其作为生成的查询计划的一部分;执行查询计划阶段,该阶段采用递归迭代的方式将前一阶段生成的查询计划予以执行,其实质在于采用递归迭代的方式执行查询计划中的表达式,得到结果返回给用户。
[0003]在实际应用中,递归迭代的方式可以较好地满足简单的表达式执行,但是当对复杂的表达式进行执行处理时,递归迭代会产生大量的压栈弹栈操作,显著降低表达式执行处理的效率,从而降低数据库数据处理的效率。
[0004]因此,如何通过提高关系数据库中表达式的执行处理效率提高关系数据库的查询效率,成为亟待解决的技术问题。

技术实现思路

[0005]有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种关系数据库中数据查询的方法。
[0006]本专利技术提供一种关系数据库中数据查询的方法,包括:
[0007]步骤S1:将用户数据查询的的输入文本解析为数据表达式,对解析获得的数据表达式进行语法验证;
[0008]步骤S2:遍历解析通过语法验证的数据表达式,生成指令数组,将生成的指令数组发送至查询计划;
[0009]步骤S3:执行查询计划阶段,根据查询计划中的指令数组执行数据表达式,获得查询结果返回至用户。
[0010]进一步地,本专利技术关系数据库中数据查询的方法,步骤S1中的数据表达式采用二叉树数据结构表示。
[0011]进一步地,本专利技术关系数据库中数据查询的方法,步骤S1中,对解析获得的数据表达式进行语法验证,包括:
[0012]将右子树为空且左子树为常量的表达式判定为语法验证不通过;
[0013]将根节点为运算符,但不存在左子树和右子树的表达式判定为语法验证不通过;
[0014]将根节点为运算符,左子树或/和右子树为运算符的表达式判定为语法验证不通
过;
[0015]将根节点为常量,但存在左子树或右子树的表达式判定为语法验证不通过。
[0016]进一步地,本专利技术关系数据库中数据查询的方法,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:遍历通过语法验证的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析和标记,生成与解析过程对应的指令数组。
[0017]进一步地,本专利技术关系数据库中数据查询的方法,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:
[0018]当数据表达式的左子树和右子树为空,且根节点为常量,将所述数据表达式标记为常量;
[0019]当数据表达式的左子树和右子树均为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作;
[0020]当数据表达式的左子树为空,右子树为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。
[0021]进一步地,本专利技术关系数据库中数据查询的方法,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:
[0022]当数据表达式的左子树不是常量,右子树是常量,将所述数据表达式的左子树更新为当前数据表达式;
[0023]遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析,将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量;
[0024]将所述常量作为更新前数据表达式的左子树,将更新前数据表达式的运算符对应的指令增加至指令数组,将更新前数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。
[0025]进一步地,本专利技术关系数据库中数据查询的方法,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:
[0026]当数据表达式的左子树是常量,右子树不是常量,将所述数据表达式的右子树更新为当前数据表达式;
[0027]遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析和标记,将将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量;
[0028]将所述常量作为更新前数据表达式的右子树,将更新前数据表达式的运算符对应的指令增加至指令数组,将更新前数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。
[0029]进一步地,本专利技术关系数据库中数据查询的方法,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:
[0030]当数据表达式的左子树和右子树都不是常量,将所述数据表达式的左子树更新为
当前数据表达式,遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析,将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,将所述常量作为更新前数据表达式的左子树;
[0031]将更新前数据表达式的右子树更新为当前数据表达式,遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析和标记,将将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,将所述常量作为更新前数据表达式的右子树;
[0032]将更新前数据表达式的运算符对应的指令增加至指令数组,将更新前数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。
[0033]进一步地,本专利技术关系数据库中数据查询的方法,步骤S3中,根据查询计划中的指令数组执行数据表达式,包括:通过指令计数器对执行的指令进行计数,所述指令计数器的初始值为零,每次执行指令数组中的指令后,检查指令计数器的计数是否等于指令数组中指令的总数,根据检查结果选择继续或结束指令执行。
[0034]进一步地,本专利技术关系数据库中数据查询的方法中,检查指令计数器的计数是否等于指令数组中指令的总数,根据检查结果选择继续或结束指令执行,包括:
[0035]当指令计数器的计数与指令数组中指令的总数相等,结本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种关系数据库中数据查询的方法,其特征在于,所述方法包括:步骤S1:将用户数据查询的的输入文本解析为数据表达式,对解析获得的数据表达式进行语法验证;步骤S2:遍历解析通过语法验证的数据表达式,生成指令数组,将生成的指令数组发送至查询计划;步骤S3:执行查询计划阶段,根据查询计划中的指令数组执行数据表达式,获得查询结果返回至用户。2.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S1中的数据表达式采用二叉树数据结构表示。3.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S1中,对解析获得的数据表达式进行语法验证,包括:将右子树为空且左子树为常量的表达式判定为语法验证不通过;将根节点为运算符,但不存在左子树和右子树的表达式判定为语法验证不通过;将根节点为运算符,左子树或/和右子树为运算符的表达式判定为语法验证不通过;将根节点为常量,但存在左子树或右子树的表达式判定为语法验证不通过。4.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:遍历通过语法验证的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析和标记,生成与解析过程对应的指令数组。5.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:当数据表达式的左子树和右子树为空,且根节点为常量,将所述数据表达式标记为常量;当数据表达式的左子树和右子树均为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作;当数据表达式的左子树为空,右子树为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。6.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:当数据表达式的左子树不是常量,右子树是常量,将所述数据表达式的左子树更新为当前数据表达式;遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析,将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量;将所述常量作为更新前数据表达式的左子树,将更新前数据表达式的运算符对应的指令增加至指令数组,将更新前数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操...

【专利技术属性】
技术研发人员:余鹏
申请(专利权)人:北京海量数据技术股份有限公司
类型:发明
国别省市:

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

1