【技术实现步骤摘要】
一种关系数据库中数据查询的方法
[0001]本专利技术涉及关系数据库管理
,尤其涉及一种关系数据库中数据查询的方法。
技术介绍
[0002]在典型的关系数据库管理系统中处理一个查询,一般包括三个阶段:词法语法分析阶段,该阶段将用户的输入文本(SQL)转化成一个适用于数据库内部的数据结构,一般称为语法解析树,并验证语法解析树的正确性,得到一个表示SQL的语法解析树,其实质是将用户的输入文本转换为数据库内部的数据表达式;查询优化阶段,该阶段基于规则以及物理代价将前一个阶段的语法解析树进行优化,生成一个最优的查询计划,该阶段对上一阶段的数据表达式不做特殊处理,将其作为生成的查询计划的一部分;执行查询计划阶段,该阶段采用递归迭代的方式将前一阶段生成的查询计划予以执行,其实质在于采用递归迭代的方式执行查询计划中的表达式,得到结果返回给用户。
[0003]在实际应用中,递归迭代的方式可以较好地满足简单的表达式执行,但是当对复杂的表达式进行执行处理时,递归迭代会产生大量的压栈弹栈操作,显著降低表达式执行处理的效率,从而降低数 ...
【技术保护点】
【技术特征摘要】
1.一种关系数据库中数据查询的方法,其特征在于,所述方法包括:步骤S1:将用户数据查询的的输入文本解析为数据表达式,对解析获得的数据表达式进行语法验证;步骤S2:遍历解析通过语法验证的数据表达式,生成指令数组,将生成的指令数组发送至查询计划;步骤S3:执行查询计划阶段,根据查询计划中的指令数组执行数据表达式,获得查询结果返回至用户。2.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S1中的数据表达式采用二叉树数据结构表示。3.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S1中,对解析获得的数据表达式进行语法验证,包括:将右子树为空且左子树为常量的表达式判定为语法验证不通过;将根节点为运算符,但不存在左子树和右子树的表达式判定为语法验证不通过;将根节点为运算符,左子树或/和右子树为运算符的表达式判定为语法验证不通过;将根节点为常量,但存在左子树或右子树的表达式判定为语法验证不通过。4.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:遍历通过语法验证的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析和标记,生成与解析过程对应的指令数组。5.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:当数据表达式的左子树和右子树为空,且根节点为常量,将所述数据表达式标记为常量;当数据表达式的左子树和右子树均为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作;当数据表达式的左子树为空,右子树为常量,且根节点为运算符,将所述运算符对应的指令增加至指令数组,将所述数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操作、数据运算逻辑以及运算结果存储操作。6.根据权利要求1所述的关系数据库中数据查询的方法,其特征在于,步骤S2中,遍历解析通过语法验证的数据表达式,生成指令数组,包括:当数据表达式的左子树不是常量,右子树是常量,将所述数据表达式的左子树更新为当前数据表达式;遍历更新后的数据表达式的左子树和右子树,根据遍历结果以及根节点的类型对所述数据表达式进行解析,将解析过程中运算符对应的指令增加至指令数组,将所述数据表达式标记为常量;将所述常量作为更新前数据表达式的左子树,将更新前数据表达式的运算符对应的指令增加至指令数组,将更新前数据表达式标记为常量,所述运算符对应的指令包括该运算符对应的参数加载操...
【专利技术属性】
技术研发人员:余鹏,
申请(专利权)人:北京海量数据技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。