一种查询语句的执行方法、装置、存储介质及电子设备制造方法及图纸

技术编号:37138401 阅读:11 留言:0更新日期:2023-04-06 21:40
本说明书公开了一种查询语句的执行方法、装置、存储介质及电子设备,可以根据待执行的查询语句对应的不同的候选执行计划进行分析,以确定每个候选执行计划中包含的对执行待执行的查询语句所需的各数据表进行连接的连接操作,以及从每个连接操作对待执行的查询语句中对应的各连接谓词语句进行筛选,从而可以按照筛选出的每个连接操作对应的目标谓词语句,估算出每个连接操作在执行后得到的数据表中的数据的行数,进而可以根据每个候选执行计划中包含的各连接操作在执行后得到的数据表中的数据的行数,对每个候选执行计划进行评估,以从各候选执行计划中筛选出一个最优的候选执行计划,并按照这个筛选出的执行计划,执行待执行的查询语句。待执行的查询语句。待执行的查询语句。

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


[0001]本说明书涉及计算机
,尤其涉及一种查询语句的执行方法、装置、存储介质及电子设备。

技术介绍

[0002]目前,数据库在执行数据查询语句(即,SQL语句)对应的数据查询操作时,会先生成执行该数据查询操作所需的各执行计划(即,数据库怎么去读取数据并筛选数据的方法),进而可以通过优化器,来从各执行计划中确定出一个最优的执行计划,并按照这个最优的执行计划进行数据查询。
[0003]而由于不同的执行计划在执行查询结果的行数不同的数据查询语句时的性能不同,所以,优化器会针对不同的执行计划,估算出按照该执行计划执行数据查询语句对应的数据查询操作时返回的查询结果的行数,并根据预估的查询结果的行数,来确定选择哪个执行计划。
[0004]但是,在现有技术中,优化器在估算按照一个执行计划执行数据查询语句对应的数据查询操作时返回的查询结果的行数时,估算出的结果的准确性较低,从而导致优化器不能选择出最优的执行计划。

技术实现思路

[0005]本说明书提供一种查询语句的执行方法、装置、存储介质及电子设备,以解决现有技术存在的用户的贷款请求中存在风险的问题。
[0006]本说明书采用下述技术方案:
[0007]本说明书提供了一种查询语句的执行方法,包括:
[0008]获取待执行的查询语句;
[0009]生成针对所述查询语句的各候选执行计划;
[0010]针对每个候选执行计划,确定按照该候选执行计划执行所述查询语句的查询操作时所需的各连接操作,所述连接操作用于将所述查询语句所要查询的各数据表进行连接;
[0011]针对每个连接操作,从该连接操作所涉及的各连接谓词语句中选择出目标谓词语句;
[0012]针对所述目标谓词语句中所涉及的每个数据列,确定各连接谓词语句所涉及的各数据列中数据与该数据列中数据相同的数据列,作为该数据列对应的各等值数据列,并根据预设的该数据列和该数据列对应的各等值数据列中的每个数据列中的不同数据的参考数量,确定该数据列中不同数据的数量;
[0013]根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,计算执行该连接操作后得到的连接后的数据表的行数,作为该连接操作对应预估行数;
[0014]根据每个候选执行计划中的每个连接操作对应的预估行数,从所述各候选执行计划中选取目标执行计划,并按照所述目标执行计划,执行所述查询语句对应的查询操作。
[0015]可选地,针对每个连接操作,从该连接操作所涉及的各连接谓词语句中选择出目标谓词语句,具体包括:
[0016]针对每个连接操作,确定该连接操作所涉及的各连接谓词语句作为各候选连接谓词语句;
[0017]将各候选连接谓词语句所涉及的各数据列中,数据相同的至少一个数据列作为该连接操作对应的一个数据列集合;
[0018]针对每个数据列集合,根据该数据列集合中包含的每个数据列所属的数据表,确定该数据列集合对应的数据表集合;
[0019]判断包含有第一类型的数据列的数据列集合对应的数据表集合中是否存在交集,所述第一类型的数据列是指连接操作中非被连接的数据表中的数据列;
[0020]若是,则从所述交集中的各数据表中任意选取出一个数据表,作为目标数据表,并该连接操作所涉及的各连接谓词语句中选择出涉及的数据列为所述目标数据表所属数据列的连接谓词语句,作为目标谓词语句。
[0021]可选地,所述方法还包括:
[0022]针对该连接操作所涉及的每个连接谓词语句,判断该连接谓词语句与所述目标谓词语句是否等价;
[0023]若否,则将该连接谓词语句也作为目标谓词语句。
[0024]可选地,根据预设的该数据列和该数据列对应的各等值数据列中的每个数据列中不同数据的参考数量,确定该数据列中的不同数据的数量,具体包括:
[0025]针对该数据列和该数据列对应的各等值数据列中的每个数据列,获取预设的该数据列中不同数据的参考数量;
[0026]从获取到的每个参考数量中,选取出值最小的参考数量,作为该数据列中的不同数据的数量。
[0027]可选地,根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,计算执行该连接操作后得到的连接后的数据表的行数,具体包括:
[0028]若所述目标谓词语句的数量为一,则根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,确定该连接操作对应的连接选择率;
[0029]根据该连接操作需要连接的每个数据表的行数以及所述连接选择率,确定执行该连接操作后得到的连接后的数据表的行数。
[0030]可选地,所述方法还包括:
[0031]若所述目标谓词语句的数量大于一,则根据各目标谓词语句所涉及的每个数据列所属的类型是否为第一类型,将所述各数据列划分为第一集合和第二集合,所述第一类型的数据列是指连接操作中非被连接的数据表中的数据列;
[0032]根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量;以及
[0033]根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量;
[0034]根据所述第一集合中的各数据列中不同数据的数量和所述第二集合中的各数据列中不同数据的数量,确定该连接操作对应的连接选择率;
[0035]根据该连接操作需要连接的每个数据表的行数以及所述连接选择率,确定执行该连接操作后得到的连接后的数据表的行数。
[0036]可选地,根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量,具体包括:
[0037]判断所述第一集合中的每个数据列是否属于同一个数据表;
[0038]若是,则基于所述第一集合中的每个数据列之间的相关性,确定所述第一集合中的各数据列中不同数据的数量;
[0039]若否,则根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量。
[0040]可选地,根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量,具体包括:
[0041]判断所述第二集合中的每个数据列是否属于同一个数据表;
[0042]若是,则根据所述第二集合中的每个数据列之间的相关性,确定所述第二集合中的各数据列中不同数据的数量;
[0043]若否,则根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量。
[0044]本说明书提供了一种查询语句的执行装置,包括:
[0045]获取模块,用于获取待执行的查询语句;
[0046]生成模块,用于生成针对所述查询语句的各候选执行计划;
[0047]第一确定模块,用于针对每个候选执行计划,确定按照该候选执行计划执行所述查询语句的查询操作时所需的各本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种查询语句的执行方法,包括:获取待执行的查询语句;生成针对所述查询语句的各候选执行计划;针对每个候选执行计划,确定按照该候选执行计划执行所述查询语句的查询操作时所需的各连接操作,所述连接操作用于将所述查询语句所要查询的各数据表进行连接;针对每个连接操作,从该连接操作所涉及的各连接谓词语句中选择出目标谓词语句;针对所述目标谓词语句中所涉及的每个数据列,确定各连接谓词语句所涉及的各数据列中数据与该数据列中数据相同的数据列,作为该数据列对应的各等值数据列,并根据预设的该数据列和该数据列对应的各等值数据列中的每个数据列中的不同数据的参考数量,确定该数据列中不同数据的数量;根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,计算执行该连接操作后得到的连接后的数据表的行数,作为该连接操作对应预估行数;根据每个候选执行计划中的每个连接操作对应的预估行数,从所述各候选执行计划中选取目标执行计划,并按照所述目标执行计划,执行所述查询语句对应的查询操作。2.如权利要求1所述的方法,针对每个连接操作,从该连接操作所涉及的各连接谓词语句中选择出目标谓词语句,具体包括:针对每个连接操作,确定该连接操作所涉及的各连接谓词语句作为各候选连接谓词语句;将各候选连接谓词语句所涉及的各数据列中,数据相同的至少一个数据列作为该连接操作对应的一个数据列集合;针对每个数据列集合,根据该数据列集合中包含的每个数据列所属的数据表,确定该数据列集合对应的数据表集合;判断包含有第一类型的数据列的数据列集合对应的数据表集合中是否存在交集,所述第一类型的数据列是指连接操作中非被连接的数据表中的数据列;若是,则从所述交集中的各数据表中任意选取出一个数据表,作为目标数据表,并该连接操作所涉及的各连接谓词语句中选择出涉及的数据列为所述目标数据表所属数据列的连接谓词语句,作为目标谓词语句。3.如权利要求2所述的方法,所述方法还包括:针对该连接操作所涉及的每个连接谓词语句,判断该连接谓词语句与所述目标谓词语句是否等价;若否,则将该连接谓词语句也作为目标谓词语句。4.如权利要求1所述的方法,根据预设的该数据列和该数据列对应的各等值数据列中的每个数据列中不同数据的参考数量,确定该数据列中的不同数据的数量,具体包括:针对该数据列和该数据列对应的各等值数据列中的每个数据列,获取预设的该数据列中不同数据的参考数量;从获取到的每个参考数量中,选取出值最小的参考数量,作为该数据列中的不同数据的数量。5.如权利要求1所述的方法,根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,计算执行该连接操作后得到的连接后的数据表的行数,具体包括:
若所述目标谓词语句的数量为一,则根据所述目标谓词语句所涉及的每个数据列中不同数据的数量,确定该连接操作对应的连接选择率;根据该连接操作需要连接的每个数据表的行数以及所述连接选择率,确定执行该连接操作后得到的连接后的数据表的行数。6.如权利要求5所述的方法,所述方法还包括:若所述目标谓词语句的数量大于一,则根据各目标谓词语句所涉及的每个数据列所属的类型是否为第一类型,将所述各数据列划分为第一集合和第二集合,所述第一类型的数据列是指连接操作中非被连接的数据表中的数据列;根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量;以及根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量;根据所述第一集合中的各数据列中不同数据的数量和所述第二集合中的各数据列中不同数据的数量,确定该连接操作对应的连接选择率;根据该连接操作需要连接的每个数据表的行数以及所述连接选择率,确定执行该连接操作后得到的连接后的数据表的行数。7.如权利要求6所述的方法,根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量,具体包括:判断所述第一集合中的每个数据列是否属于同一个数据表;若是,则基于所述第一集合中的每个数据列之间的相关性,确定所述第一集合中的各数据列中不同数据的数量;若否,则根据所述第一集合中的每个数据列中不同数据的数量,确定所述第一集合中的各数据列中不同数据的数量。8.如权利要求6所述的方法,根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量,具体包括:判断所述第二集合中的每个数据列是否属于同一个数据表;若是,则根据所述第二集合中的每个数据列之间的相关性,确定所述第二集合中的各数据列中不同数据的数量;若否,则根据所述第二集合中的每个数据列中不同数据的数量,确定所述第二集合中的各数据列中不同数据的数量。9.一种查询...

【专利技术属性】
技术研发人员:伍昱名郑振国王国平
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

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

1