System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理,尤其涉及一种查询指令生成方法、装置、设备、介质及程序产品。
技术介绍
1、在数据库管理系统中,可以通过结构化查询语言(structured query language,sql)编制用于对数据库进行管理的查询指令,例如,可以编制查询指令以执行对数据库的数据查询、插入记录、删除记录、更新记录以及创建和修改数据库结构等的管理操作。
2、若编制的查询指令较为复杂时,会通过优化器对其进行优化。在现有的方法中,优化器通常采用公共表表达式(common table expression,cte)对初始的查询指令进行改写,以得到包含cte的新的查询指令。
3、但是,基于cte方式生成的新的查询指令仍存在重复扫描查询表项的情况,因此,执行该包含cte的新的查询指令时,会消耗较多的计算资源。
技术实现思路
1、本申请实施例提供一种查询指令生成方法、装置、设备、介质及程序产品,用以实现生成能避免重复扫描查询表项的查询指令,使得在执行生成的该查询指令时,能降低扫描查询表项时对计算资源的消耗。
2、第一方面,本申请实施例提供一种查询指令生成方法,应用于电子设备,所述电子设备包括优化器,所述方法包括:
3、获取初始查询指令,所述初始查询指令为采用结构化查询语言编制的指令;
4、在所述初始查询指令包括至少两个子查询的情况下,通过所述优化器确定所述至少两个子查询的子查询运算符和连接所述至少两个子查询的子查询连接符;
5、
6、或者,在所述至少两个子查询的子查询运算符均为not exists,且所述子查询连接符为and的情况下,通过所述优化器确定所述至少两个子查询的查询表项是否相同,并在所述至少两个子查询的查询表项相同的情况下,生成第二目标查询指令,所述第二目标查询指令包括将所述至少两个子查询合并为一个通过or连接的第二合并子查询。
7、在一种可能的实施方式中,所述生成第一目标查询指令,包括:根据所述初始查询指令,将所述至少两个子查询的子查询运算符合并为一个exists,得到所述第一目标查询指令的查询运算符,并基于所述第一目标查询指令的查询运算符,生成所述第一目标查询指令;
8、或者,所述生成第二目标查询指令,包括:根据所述初始查询指令,将所述至少两个子查询的子查询运算符合并为一个not exists,得到所述第二目标查询指令的查询运算符,并基于所述第二目标查询指令的查询运算符,生成所述第二目标查询指令。
9、在一种可能的实施方式中,所述方法还包括:在所述优化器支持半连接的情况下,对所述第一目标查询指令进行半连接的等价转换,生成所述第一目标查询指令对应的第三目标查询指令,所述第三目标查询指令的执行结果和所述第一目标查询指令的执行结果与所述初始查询指令的执行结果相同。
10、在一种可能的实施方式中,所述方法还包括:在所述优化器支持反连接的情况下,对所述第二目标查询指令进行反连接的等价转换,生成所述第二目标查询指令对应的第四目标查询指令,所述第四目标查询指令的执行结果和所述第二目标查询指令的执行结果与所述初始查询指令的执行结果相同。
11、在一种可能的实施方式中,所述获取初始查询指令之后,还包括:通过所述优化器检测所述初始查询指令中是否包括预设目标项,所述预设目标项包括排序运算、分组运算或目标列表达式中的至少一项;在确定所述初始查询指令中包括预设目标项的情况下,消除所述预设目标项。
12、在一种可能的实施方式中,所述方法还包括:通过所述优化器分别对所述初始查询指令、所述第一目标查询指令和所述第三目标查询指令计算各自对应的执行代价,并将各所述执行代价中最小的执行代价对应的查询指令确定为用于执行的目标执行指令;或者,通过所述优化器分别对所述初始查询指令、所述第二目标查询指令和所述第四目标查询指令计算各自对应的执行代价,并将各所述执行代价中最小的执行代价对应的查询指令确定为用于执行的目标执行指令。
13、第二方面,本申请实施例提供一种查询指令生成装置,应用于电子设备,所述电子设备包括优化器,所述装置包括:
14、获取模块,用于获取初始查询指令,所述初始查询指令为采用结构化查询语言编制的指令;
15、优化模块,用于在所述初始查询指令包括至少两个子查询的情况下,通过所述优化器确定所述至少两个子查询的子查询运算符和连接所述至少两个子查询的子查询连接符;
16、所述优化模块,还用于在所述至少两个子查询的子查询运算符为预设运算符集合中的任意一种,且所述子查询连接符为or的情况下,通过所述优化器确定所述至少两个子查询的查询表项是否相同,并在所述至少两个子查询的查询表项相同的情况下,生成第一目标查询指令,所述第一目标查询指令包括将所述至少两个子查询合并为一个通过or连接的第一合并子查询,所述预设运算符集合包括运算符exists、in、any和some;
17、所述优化模块,还用于或者,在所述至少两个子查询的子查询运算符均为notexists,且所述子查询连接符为and的情况下,通过所述优化器确定所述至少两个子查询的查询表项是否相同,并在所述至少两个子查询的查询表项相同的情况下,生成第二目标查询指令,所述第二目标查询指令包括将所述至少两个子查询合并为一个通过or连接的第二合并子查询。
18、在一种可能的实施方式中,所述优化模块具体用于:根据所述初始查询指令,将所述至少两个子查询的子查询运算符合并为一个exists,得到所述第一目标查询指令的查询运算符,并基于所述第一目标查询指令的查询运算符,生成所述第一目标查询指令;或者,所述优化模块具体用于:根据所述初始查询指令,将所述至少两个子查询的子查询运算符合并为一个not exists,得到所述第二目标查询指令的查询运算符,并基于所述第二目标查询指令的查询运算符,生成所述第二目标查询指令。
19、在一种可能的实施方式中,所述优化模块还用于:在所述优化器支持半连接的情况下,对所述第一目标查询指令进行半连接的等价转换,生成所述第一目标查询指令对应的第三目标查询指令,所述第三目标查询指令的执行结果和所述第一目标查询指令的执行结果与所述初始查询指令的执行结果相同。
20、在一种可能的实施方式中,所述优化模块还用于:在所述优化器支持反连接的情况下,对所述第二目标查询指令进行反连接的等价转换,生成所述第二目标查询指令对应的第四目标查询指令,所述第四目标查询指令的执行结果和所述第二目标查询指令的执行结果与本文档来自技高网...
【技术保护点】
1.一种查询指令生成方法,其特征在于,应用于电子设备,所述电子设备包括优化器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取初始查询指令之后,还包括:
6.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
7.一种查询指令生成装置,其特征在于,应用于电子设备,所述电子设备包括优化器,所述装置包括:
8.一种电子设备,其特征在于,包括:存储器和处理器;
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
【技术特征摘要】
1.一种查询指令生成方法,其特征在于,应用于电子设备,所述电子设备包括优化器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取初始查询指令之后,还包括:
6.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
【专利技术属性】
技术研发人员:王源春,徐登峰,尹强,
申请(专利权)人:中电科金仓北京科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。