本发明专利技术公开了一种SQL子查询的执行方法、装置、终端设备及计算机可读存储介质,大数据引擎在执行数据处理的过程中,获取包含子查询的SQL语句;对所述SQL语句进行逻辑计划转化,并在对所述SQL语句进行逻辑转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式;根据所述逻辑过滤关系表达式生成所述SQL语句的执行代码并执行。采用本发明专利技术技术方案能够在转化过程中利用异构数据源不同的特性,无需拉取大量数据进行计算,从而有效地节省了大数据引擎执行SQL子查询时对于IO和CPU的占用率,使得大数据引擎在执行SQL子查询时有了更好的性能表现。有了更好的性能表现。有了更好的性能表现。
【技术实现步骤摘要】
SQL子查询的执行方法、装置、终端设备以及介质
[0001]本专利技术属于数据库
,尤其涉及一种SQL子查询的执行方法、装置、终端设备以及计算机可读存储介质。
技术介绍
[0002]在主流大数据引擎中,针对SQL(Structured Query Language,结构化查询语言)子查询的处理基本上都是将SQL语句包含的子查询优化为JOI N(计算机编程术语,“加入”、“参加”、“连接”、“联结”)形式的代码来执行。
[0003]然而,大数据引擎在将SQL语句中的子查询语句转化为J ION形式的代码的过程中,需要拉取大量的数据来进行计算,从而执行引擎整体会因为拉取的数据量大和计算量大,而导致IO(I nput/Output,“数据输入”/“数据输出”)与CPU(centra l process i ng unit,中央处理器)的性能消耗较大。
技术实现思路
[0004]本专利技术的主要目的在于提供一种SQL子查询的执行方法、装置、终端设备及计算机可读存储介质。旨在节省大数据引擎执行SQL子查询时对于IO和CPU的占用率从而提升大数据引擎的性能表现。
[0005]为了实现上述目的,本专利技术提供一种SQL子查询的执行方法。本专利技术SQL子查询的执行方法包括:
[0006]获取包含子查询的SQL语句;
[0007]对所述SQL语句进行逻辑计划转化,并在对所述SQL语句进行逻辑转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式;
[0008]根据所述逻辑过滤关系表达式生成所述SQL语句的执行代码并执行。
[0009]可选地,在所述对所述SQL语句进行逻辑计划转化的步骤之前,所述方法还包括:
[0010]检测所述SQL语句中的外部查询与所述子查询之间的查询关系,其中,所述外部查询为所述SQL语句中除开所述子查询之外的查询语句。
[0011]所述对所述SQL语句进行逻辑计划转化的步骤,包括:
[0012]若检测到所述查询关系为非关联查询,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。
[0013]可选地,在所述检测所述SQL语句中的外部查询与所述子查询之间的查询关系的步骤之后,所述方法还包括:
[0014]确定所述子查询是否符合预设的快速检索条件;
[0015]所述对所述SQL语句进行逻辑计划转化的步骤,包括:
[0016]若检测到所述查询关系为非关联查询,且确定所述子查询符合所述快速检索条件,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。
[0017]可选地,在所述检测所述SQL语句中的外部查询与所述子查询之间的查询关系的步骤之后,所述方法还包括:
[0018]确定所述子查询是否符合预设的I O节省条件;
[0019]所述对所述SQL语句进行逻辑计划转化的步骤,包括:
[0020]若检测到所述查询关系为非关联查询,且确定所述子查询符合所述I O节省条件,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。
[0021]可选地,所述根据所述逻辑过滤关系表达式生成所述SQL语句的执行代码的步骤,包括:
[0022]生成所述逻辑过滤关系表达式对应的中间代码;
[0023]物化所述子查询得到物化结果,并将所述物化结果表示为字符串;
[0024]基于所述字符串对所述中间代码进行重写以生成所述SQL语句的执行代码。
[0025]可选地,所述获取包含子查询的SQL语句的步骤,包括:
[0026]通过大数据引擎对外提供的数据接口接收数据处理请求;
[0027]解析所述数据处理请求以得到包含子查询的SQL语句,其中,所述SQL语句用于查询第一数据库中存储的数据,所述子查询用于查询第二数据库中存储的数据。
[0028]可选地,所述获取包含子查询的SQL语句的步骤,包括:
[0029]将包含JO I N数据的SQL执行代码转化为SQL语句,其中,所述JO I N数据转化为所述SQL语句中包含的子查询。
[0030]此外,为实现上述目的,本专利技术还提供一种SQL子查询的执行装置。本专利技术SQL子查询的执行装置包括:
[0031]获取模块,用于获取包含子查询的SQL语句;
[0032]逻辑转化模块,用于对所述SQL语句进行逻辑计划转化,并在对所述SQL语句进行逻辑转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式;
[0033]代码生成与执行模块,用于根据所述逻辑过滤关系表达式生成所述SQL语句的执行代码并执行。
[0034]本专利技术SQL子查询的执行装置的各个功能模块在运行时实现如上所述的SQL子查询的执行运动的控制方法的步骤。
[0035]此外,为实现上述目的,本专利技术还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的SQL子查询的执行程序,所述SQL子查询的执行的控制程序被所述处理器执行时实现如上所述的SQL子查询的执行运动的控制方法的步骤。
[0036]此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有SQL子查询的执行程序,所述SQL子查询的执行程序被处理器执行时实现如上所述的SQL子查询的执行方法的步骤。
[0037]本专利技术实施例提出的一种SQL子查询的执行方法、装置、终端设备以及计算机可读存储介质,通过大数据引擎在执行数据处理的过程中,获取包含子查询的SQL语句;对所述SQL语句进行逻辑计划转化,并在对所述SQL语句进行逻辑转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式;根据所述逻辑过滤关系表达式生成所述SQL语句的
执行代码并执行。
[0038]如此,本专利技术实施例通过在针对SQL语句进行逻辑计划优化的过程中,将SQL语句中包含的子查询保留下来进行后续的物化,而不是直接将该子查询转化为JO I N形式,如此,引擎即无需拉取大量数据进行计算,从而有效地节省了大数据引擎执行SQL子查询时对于I O和CPU的占用率,使得大数据引擎在执行SQL子查询时有了更好的性能表现。
附图说明
[0039]图1是本专利技术实施例方案涉及的终端设备硬件运行环境的设备结构示意图;
[0040]图2为本专利技术SQL子查询的执行方法第一实施例的流程示意图;
[0041]图3为本专利技术SQL子查询的执行装置一实施例的功能模块示意图。
[0042]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0043]应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0044]参照图1,图1为本专利技术实施例方案涉及的终端设备硬件运行环境的设备结构示意图。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种SQL子查询的执行方法,其特征在于,包括:获取包含子查询的SQL语句;对所述SQL语句进行逻辑计划转化,并在对所述SQL语句进行逻辑转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式;根据所述逻辑过滤关系表达式生成所述SQL语句的执行代码并执行。2.如权利要求1所述的SQL子查询的执行方法,其特征在于,在所述对所述SQL语句进行逻辑计划转化的步骤之前,所述方法还包括:检测所述SQL语句中的外部查询与所述子查询之间的查询关系,其中,所述外部查询为所述SQL语句中除开所述子查询之外的查询语句;所述对所述SQL语句进行逻辑计划转化的步骤,包括:若检测到所述查询关系为非关联查询,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。3.如权利要求2所述的SQL子查询的执行方法,其特征在于,在所述检测所述SQL语句中的外部查询与所述子查询之间的查询关系的步骤之后,所述方法还包括:确定所述子查询是否符合预设的快速检索条件;所述对所述SQL语句进行逻辑计划转化的步骤,包括:若检测到所述查询关系为非关联查询,且确定所述子查询符合所述快速检索条件,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。4.如权利要求2所述的SQL子查询的执行方法,其特征在于,在所述检测所述SQL语句中的外部查询与所述子查询之间的查询关系的步骤之后,所述方法还包括:确定所述子查询是否符合预设的IO节省条件;所述对所述SQL语句进行逻辑计划转化的步骤,包括:若检测到所述查询关系为非关联查询,且确定所述子查询符合所述IO节省条件,则在对所述SQL语句进行逻辑计划转化时保留所述子查询以得到包含所述子查询的逻辑过滤关系表达式。5.如权利要求1所述的SQL子查询的执行方...
【专利技术属性】
技术研发人员:段雄,刘骏,胡哲,
申请(专利权)人:杭州海康威视系统技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。