【技术实现步骤摘要】
一种数据查询的方法、相关装置及数据库系统
本申请涉及计算机
,尤其涉及一种数据查询的方法、相关装置及数据库系统。
技术介绍
随着互联网技术的快速发展,许多应用均伴随着大量数据的产生,这些数据通过数据库来保存。同时应用可通过结构化查询语言(structuredquerylanguage,SQL)查询从数据库获取所需的数据。子查询,也称为内查询(InnerQuery)或嵌套查询(NestedQuery),是一种嵌套在其他SQL查询的输出列或WHERE子句中的查询。被嵌套的该其他SQL查询也称为父查询或者外层查询(OuterQuery)。子查询包括相关子查询和非相关子查询,如果外层查询是有变参传入子查询中,则该子查询为相关子查询,否则为非相关子查询。为了提升子查询效率,现有技术通常可将子查询转化为联接(join),转化为join后通过高效的表连接算法,能够使得执行效率得以大幅提升。但是并不是所有的子查询都能转化为join来执行的。例如,对于如下不能转化为join的子查询:select*fromt1wherea1>(selectavg(a2)fromt2whereb ...
【技术保护点】
1.一种数据查询的方法,其特征在于,包括:接收数据查询请求,所述数据查询请求包含子查询以及所述子查询对应的父查询,所述子查询的执行依赖于所述父查询传入的多个参数值;确定所述数据查询请求的子查询估算代价值,其中,所述子查询估算代价值指示对所述父查询传入的多个参数值排序后执行所述子查询的代价,所述子查询估算代价值与所述子查询对应的父查询传入的多个参数值的重复率相关;若所述子查询估算代价值小于预设门限,则根据父查询传入的多个参数值构建父查询数据表,并对所述父查询数据表中的元组进行排序,以得到目标查询数据表,其中,所述父查询数据表包含所述多个参数值对应的多条元组;若所述目标查询数据 ...
【技术特征摘要】
1.一种数据查询的方法,其特征在于,包括:接收数据查询请求,所述数据查询请求包含子查询以及所述子查询对应的父查询,所述子查询的执行依赖于所述父查询传入的多个参数值;确定所述数据查询请求的子查询估算代价值,其中,所述子查询估算代价值指示对所述父查询传入的多个参数值排序后执行所述子查询的代价,所述子查询估算代价值与所述子查询对应的父查询传入的多个参数值的重复率相关;若所述子查询估算代价值小于预设门限,则根据父查询传入的多个参数值构建父查询数据表,并对所述父查询数据表中的元组进行排序,以得到目标查询数据表,其中,所述父查询数据表包含所述多个参数值对应的多条元组;若所述目标查询数据表中第一元组对应的参数值与第二元组对应的参数值不一致,则根据所述第一元组对应的参数值执行所述子查询以获取第一数据查询结果,其中,所述第一元组为按照所述排序与所述第二元组后相邻的元组。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述子查询估算代价值大于所述预设门限,则根据所述父查询数据表获取数据查询结果。3.根据权利要求1所述的方法,其特征在于,所述确定所述数据查询请求的子查询估算代价值,包括:根据所述父查询数据表中的元组数目以及所述父查询传入的所述多个参数值中非重复的参数值的数目确定所述子查询估算代价值。4.根据权利要求3所述的方法,其特征在于,所述根据所述父查询数据表中的元组数目以及所述父查询传入的所述多个参数值中非重复的参数值的数目确定所述子查询估算代价值,包括:根据所述元组数目、所述非重复的参数值的数目以及子查询执行代价值,计算子查询节省代价值,其中,所述子查询执行代价值与子查询数据表中的元组数目具有关联关系,所述子查询执行代价值指示执行一次子查询的代价,所述子查询数据表对应于所述目标查询数据表中的一条元组;根据父查询排序代价值与所述子查询节省代价值之间的差值确定所述子查询估算代价值,其中,所述父查询排序代价值与所述父查询数据表中的元组数目具有关联关系,所述父查询排序代价值指示对所述父查询数据表进行一次排序操作的代价。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:缓存所述第一数据查询结果。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:判断所述目标查询数据表中第三元组的参数值与第一元组的参数值是否一致,若一致,则获取已缓存的所述第一数据查询结果,其中,所述第三元组的参数值是在获取到所述第一元组的参数值之后得到的。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:若所述目标查询数据表中第三元组的参数值与第一元组的参数值不一致,则根据所述第三元组的参数值获取第二数据查询结果;缓存所述第二数据查询结果,并擦除所述第一数据查询结果。8.一种数据查询装置,其特征在于,包括:接收模块,用于接收数据查询请求,所述数据查询请求包含子查询以及所述子查询对应的父查询,所述子查询的执行依赖于所述父查询传入的多个参数值;确定模块,用于确定所述接收模块接收的所述数据查询请求的子查询估算代价值,其中,所述子查询估算代价值指示对所述父查询传入的多个参数值排序后执行所述子查询的代价,所述子查...
【专利技术属性】
技术研发人员:李茂增,孟聪,陈毅能,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。