一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

关系型数据库查询优化方法、装置、电子设备及存储介质与流程

2022-04-02 05:24:29 来源:中国专利 TAG:


1.本技术涉及数据库技术领域,尤其涉及一种关系型数据库查询优化方法、装置、电子设备及存储介质。


背景技术:

2.近年来,随着移动互联网、大数据、人工智能等新应用场景以及新型硬件技术的发展,数据库管理系统(database management system,dbms)在规模和复杂性方面有了显著的增加,对数据库的查询性能的要求也越来越高。
3.谓词下推是最早的也是最普遍的数据库查询优化策略之一,但该策略有一定的局限性,它不一定适用于现有的所有的场景,比如当谓词中涉及非常耗时的操作,如包含复杂的自定义函数,把谓词操作下推到基表,然后执行该谓词条件操作的代价很大,尤其是当谓词条件操作选择性很差的情况下,频繁执行该谓词条件非常耗时,大大降低了查询的执行效率。
4.因此,亟需一种提高数据库查询效率的方法。


技术实现要素:

5.本技术实施例提供了一种关系型数据库查询优化方法、装置、电子设备及存储介质,以解决现有技术中通过谓词下推的方式进行sql查询,若谓词条件复杂耗时会导致查询效率较低的问题。
6.本技术实施例的第一方面,提供一种关系型数据库查询优化方法,该方法包括:计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值,sql语句用于对至少两个基表进行连接查询;计算sql语句的连接条件的第二等级值;在n个第一等级值中存在至少一个第三等级值的情况下,将每个第三等级值对应的过滤条件上拉到连接条件之上执行;在n个第一等级值中存在至少一个第四等级值的情况下,将每个第四等级值对应的过滤条件下推到连接条件之下执行;其中,每个第三等级值大于或等于所述第二等级值,每个第四等级值小于第二等级值,n为正整数。
7.可选地,每个第三等级值对应的过滤条件中存在执行代价大于或等于代价阈值的函数。
8.可选地,计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值;计算sql语句的连接条件的第二等级值,包括:基于每个过滤条件的执行代价,计算得到相应的第一等级值;基于连接条件的执行代价,计算得到第二等级值。
9.可选地,基于每个过滤条件的执行代价,计算得到相应的第一等级值;基于连接条件的执行代价,计算得到第二等级值,包括:基于每个过滤条件的执行代价和选择率,计算得到相应的第一等级值;基于连接条件的执行代价和选择率,计算得到第二等级值。
10.可选地,至少一个第三等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
11.可选地,至少一个第四等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
12.可选地,将每个第四等级值对应的过滤条件下推到连接条件之下执行之后,该方法还包括:在n个第一等级值中包括大于或等于等级阈值的第一等级值的情况下,保存sql语句的执行结果。
13.本技术实施例的第二方面,提供一种关系型数据库查询优化装置,该装置包括:计算模块和执行模块;计算模块,用于计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值,sql语句用于对至少两个基表进行连接查询;计算sql语句的连接条件的第二等级值;执行模块,用于在n个第一等级值中存在至少一个第三等级值的情况下,将每个第三等级值对应的过滤条件上拉到连接条件之上执行;在n个第一等级值中存在至少一个第四等级值的情况下,将每个第四等级值对应的过滤条件下推到连接条件之下执行;其中,每个第三等级值大于或等于第二等级值,每个第四等级值小于所述第二等级值,n为正整数。
14.可选地,每个第三等级值对应的过滤条件中存在执行代价大于或等于代价阈值的函数。
15.可选地,该计算模块,具体用于基于每个过滤条件的执行代价,计算得到相应的第一等级值;基于连接条件的执行代价,计算得到第二等级值。
16.可选地,该计算模块,具体用于基于每个过滤条件的执行代价和选择率,计算得到相应的第一等级值;基于连接条件的执行代价和选择率,计算得到第二等级值。
17.可选地,该执行模块,具体用于至少一个第三等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
18.可选地,该执行模块,具体用于至少一个第四等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
19.可选地,关系型数据库查询优化装置还包括:保存模块;该保存模块,用于在将每个第四等级值对应的过滤条件下推到连接条件之下执行之后,在n个第一等级值中包括大于或等于等级阈值的第一等级值的情况下,保存sql语句的执行结果。
20.本技术实施例的第三方面,提供一种电子设备,该电子设备包括处理器、存储器及存储在该存储器上并可在该处理器上运行的程序或指令,该程序或指令被该处理器执行时实现如第一方面所述的关系型数据库查询优化方法的步骤。
21.本技术实施例的第四方面,提供一种可读存储介质,该可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现如第一方面所述的关系型数据库查询优化方法的步骤。
22.本技术实施例的第五方面,提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序或指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序或指令,实现如第一方面所述的关系型数据库查询优化方法的步骤。
23.本技术实施例的第六方面,提供了一种芯片,该芯片包括处理器和通信接口,该通信接口和该处理器耦合,该处理器用于运行程序或指令,实现如第一方面所述的关系型数据库查询优化方法。
24.本技术实施例提供的技术方案与现有技术相比具有如下优点:
25.本技术实施例中,计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值,sql语句用于对至少两个基表进行连接查询;计算sql语句的连接条件的第二等级值;在n个第一等级值中存在至少一个第三等级值的情况下,将每个第三等级值对应的过滤条件上拉到连接条件之上执行;在n个第一等级值中存在至少一个第四等级值的情况下,将每个第四等级值对应的过滤条件下推到连接条件之下执行;其中,每个第三等级值大于或等于第二等级值,每个第四等级值小于第二等级值,n为正整数;本方案中,根据每个过滤条件等级值与连接条件的等级值的大小关系(即确定了每个过滤条件和连接条件的复杂关系),确定需要上拉的过滤条件(至少一个第三等级值对应的过滤条件)和需要下推的过滤条件(至少一个第四等级值对应的过滤条件),将比连接条件等级值低的过滤条件下推到基表执行,提高了sql语句的执行效率,同时将比连接条件等级值高或者相等的过滤条件上拉到连接条件之上执行,减少了执行该复杂的过滤条件的次数,使得sql查询的耗时更小,执行效率更高。
附图说明
26.为了更清楚地说明本技术实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,还可以根据这些附图获得其它的附图。
27.图1为本技术实施例提供的关系型数据库查询优化方法的流程示意图之一;
28.图2为本技术实施例提供的一种关系型数据库查询优化方法的示例图;
29.图3为本技术实施例提供的关系型数据库查询优化方法的流程示意图之二;
30.图4为本技术实施例提供的关系型数据库查询优化方法的流程示意图之三;
31.图5为本技术实施例提供的关系型数据库查询优化方法的流程示意图之四;
32.图6为本技术实施例提供的一种关系型数据库查询优化装置的结构框图;
33.图7为本技术实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本技术保护的范围。
35.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
36.下面首先对本发明的权利要求书和说明书中涉及的一些名词或者术语进行解释说明。
37.sql,是结构化查询语言(structured query language)的简称,sql语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是
数据库脚本文件的扩展名。
38.本技术实施例中的电子设备可以为移动电子设备,也可以为非移动电子设备。移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等;非移动电子设备可以为个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等;本技术实施例不作具体限定。
39.本技术实施例提供的关系型数据库查询优化方法的执行主体可以为上述的电子设备(包括移动电子设备和非移动电子设备),也可以为该电子设备中能够实现该关系型数据库查询优化方法的功能模块和/或功能实体,具体的可以根据实际使用需求确定,本技术实施例不作限定。
40.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的关系型数据库查询优化方法进行详细地说明。
41.如图1所示,本技术实施例提供一种关系型数据库查询优化方法,下面以执行主体为电子设备为例,对本技术实施例提供的关系型数据库查询优化方法进行示例性的说明。该方法可以包括下述的步骤101至步骤104。
42.101、计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值。
43.其中,sql语句用于对至少两个基表进行连接查询,n为正整数。
44.其中,第一等级值用于表征过滤条件的复杂性。
45.可以理解,用于对至少两个基表进行连接查询的sql语句中可能包含多个过滤条件,对每个过滤条件都计算出一个第一等级值,得到n个第一等级值(即计算每个过滤条件复杂性)。
46.可选地,保存所有第一等级值。如此,将每个过滤条件的第一等级值进行保存,下一次对于完全一样的过滤条件对应的第一等级值无需重复计算,可以直接使用,提升了sql的执行效率。
47.可选地,保存大于第一阈值的第一等级值。
48.可以理解,第一阈值可以是根据历史经验预设的,也可以是根据实时数据计算的,具体可以根据实际情况确定,本技术实施例不做具体限定。示例性地,第一阈值可以是相应的连接条件的等级值(例如,第二等级值)。
49.本技术实施例中,由于一些过滤条件的等级值计算比较耗时,因此将过滤条件中第一等级值大于第一阈值的第一等级值保存,下一次对于完全一样的过滤条件对应的第一等级值无需重复计算,可以直接使用,提升了sql的执行效率。
50.102、计算sql语句的连接条件的第二等级值。
51.其中,第二等级值用于表征连接条件的复杂性。
52.可选地,保存第二等级值。如此,将sql语句的连接条件的第二等级值进行保存,下一次对于完全一样的连接条件对应的第二等级值无需重复计算,可以直接使用,提升了sql的执行效率。
53.103、在n个第一等级值中存在至少一个第三等级值的情况下,将每个第三等级值
对应的过滤条件上拉到连接条件之上执行。
54.其中,每个第三等级值大于或等于第二等级值。
55.可以理解,第三等级值的对应的过滤条件即为第一等级值中大于或等于第二等级值时对应的过滤条件,将第三等级值对应的过滤条件上拉到连接条件之上执行;即将所有比连接条件等级值高或者相等的过滤条件上拉到连接条件之上执行。
56.104、在n个第一等级值中存在至少一个第四等级值的情况下,将每个第四等级值对应的过滤条件下推到连接条件之下执行。
57.其中,每个第四等级值小于第二等级值。
58.可以理解,第四等级值的对应的过滤条件即为第一等级值中小于第二等级值时对应的过滤条件,将第四等级值对应的过滤条件下推到连接条件之下执行;即将所有比连接条件等级值低的过滤条件下推到连接条件之下执行。
59.可以理解,谓词下推在谓词条件操作较为简单(简单常量的大于、小于、等于的判断等),谓词条件操作执行代价很低且选择性较高的情况下,将谓词条件下推到基表执行,能够有效地提高sql语句的执行效率;但是,如果谓词条件中包含了较为复杂耗时的函数调用(一般为自定义函数),并且选择性不高,此时再将谓词条件下推到基表(通常数据量较大)执行,频繁执行该计算复杂且耗时的谓词条件操作,会使整个sql的执行效率很低,因此,本技术实施例,将谓词条件细分为连接条件和过滤条件,简单的过滤条件依旧下推到基表执行,但对于包含比较复杂的函数的耗时的过滤条件,将该过滤条件上拉到连接条件之上执行。
60.示例性地,当所有的过滤条件的等级值都大于或者等于连接条件的等级值情况下(即至少一个第三等级值对应的过滤条件有n个,第四等级值对应的过滤条件有0个),这时将所有的过滤条件上拉到连接条件之上执行;当所有的过滤条件的等级值都小于连接条件的等级值情况下(即至少一个第四等级值对应的过滤条件有n个,第三等级值对应的过滤条件有0个),这时将所有的过滤条件下推到连接条件之下执行;当有部分过滤条件的等级值大于或者等于连接条件的等级值情况下(即第三等级值对应的过滤条件的个数和第四等级值对应的过滤条件的个数的和为第一等级值对应的过滤条件的个数n),这时将第三等级值对应的过滤条件上拉到连接条件之上执行,将第四等级值对应的过滤条件下推到连接条件之下执行。
61.示例性地,sql语句为:select*from t1 inner join t2 on t1.id=t2.id where t1.age《40and t2.name='mary'and myfunc(t1.id)》1;其中t1是第一个基表,t2是第二个基表,myfunc(t1.id)是一个用户自定义的函数,t1.age《40、t2.name='mary'、myfunc(t1.id)》1均为过滤条件;t1.id=t2.id为连接条件;假设连接条件t1.id=t2.id的等级值为2;t1.age《40的等级值为1,t2.name='mary'等级值为1,myfunc(t1.id)》1的等级值为5;则将myfunc(t1.id)》1上拉到inner join t1.id=t2.id之上执行,将t1.age《40、t2.name='mary'下推到inner join t1.id=t2.id之下执行。
62.示例性地,如图2所示,标号200指示的是现有技术中将谓词下推,执行sql语句select*from t1 iner join t2 on t1.id=t2.id where t1.age《40and t2.name='mary'and myfunc(t1.id)》1的过程为:先扫描基表t1和t2,对于基表t1,通过t1.age《40过滤掉基表t1中t1.age大于或者等于40的部分,再通过myfunc(t1.id)》1过滤掉基表t1中
myfunc(t1.id)大于或者等于1的部分;对于基表t2,通过t2.name='mary'过滤掉t2.name不是'mary'的部分;再将过滤后的基表t1和基表t2满足t1.id=t2.id连接条件的部分连接在一起作为结果集;在本技术实施例中,假设过滤条件myfunc(t1.id)的等级值大于连接条件t1.id=t2.id的等级值,其余过滤条件的等级值小于连接条件t1.id=t2.id的等级值,在此条件下,标号201指示的是本技术实施例的关系型数据库查询优化方法对于上述sql语句的执行过程:先扫描基表t1和t2,对于基表t1,通过t1.age《40过滤掉基表t1中t1.age大于或者等于40的部分(将过滤条件下推到连接条件之下执行,即谓词下推);对于基表t2,通过t2.name='mary'过滤掉t2.name不是mary的部分;再将过滤后的基表t1和基表t2满足t1.id=t2.id连接条件的部分连接在一起作为结果集;再通过myfunc(t1.id)》1过滤掉结果集中myfunc(t1.id)大于或者等于1的部分(将过滤条件上拉到连接条件之上执行)。
63.本技术实施例中,根据每个过滤条件等级值与连接条件的等级值的大小关系(即确定了每个过滤条件和连接条件的复杂关系),确定需要上拉的过滤条件(至少一个第三等级值对应的过滤条件)和需要下推的过滤条件(至少一个第四等级值对应的过滤条件),将比连接条件等级值低的过滤条件下推到基表执行,提高了sql语句的执行效率,同时将比连接条件等级值高或者相等的过滤条件上拉到连接条件之上执行,减少了执行该复杂的过滤条件的次数,使得sql查询的耗时更小,执行效率更高。
64.可选地,每个第三等级值对应的过滤条件中存在执行代价大于或等于代价阈值的函数。
65.可以理解,代价阈值可以是根据历史经验预设的,也可以是根据实时数据计算的,具体可以根据实际情况确定,本技术实施例不做具体限定。示例性地,代价阈值可以是sql语句中包含的所有函数的执行代价值中的最小值。
66.可以理解,如果连接条件比较简单,这时对于上拉到连接条件之上执行的过滤条件可以进一步限定,在满足过滤条件的等级值大于或者等于连接条件,并且过滤条件中存在执行代价大于或等于代价阈值的函数(一般为自定义的函数),这时将过滤条件上拉到连接条件之上执行。
67.本技术实施例中,对于一个第三等级值对应的过滤条件(第三等级值大于或等于第二等级值),并且该一个第三等级值对应的过滤条件中存在执行代价大于或等于代价阈值的函数,这时将过滤条件上拉到连接条件之上执行;因为如果连接条件比较简单,可能会存在过滤条件也相对简单但是其等级值大于连接条件的等级值,这时无需将过滤条件上拉到连接条件之上执行,而是进一步判断过滤条件中是否存在执行代价大于或等于代价阈值的函数,如果存在,则将过滤条件上拉到连接条件之上执行,否则,将该过滤条件下推到连接条件之下执行;通过使用代价阈值进一步限定了上拉到连接条件之上执行的过滤条件,优化了sql查询的策略,提升了sql查询的执行效率。
68.可选地,上述步骤101中第一等级值的计算具体可以通过下述步骤101a实现,上述步骤102中第二等级值的计算具体可以通过下述步骤102a实现。
69.101a、基于每个过滤条件的执行代价,计算得到相应的第一等级值。
70.102a、基于连接条件的执行代价,计算得到第二等级值。
71.可以理解,谓词条件(过滤条件和连接条件)的执行代价的计算方法不是单一不变,不同情况计算方法不同,具体根据实际情况确定,本技术实施例不做具体限定。
72.示例性地,如果只是简单的对单表的简单判断(大于、小于、等于)的情况,如:t1.id》4,求解执行代价可以是:代价(cost)=操作符代价(operator_cost)*元组数量;如果是连接条件,比如t1.id=t2.id,求解执行代价可以是:cost=获取一条元组的代价(tuple_cost)*((t1元组数量-1) t2元组数量);如果谓词条件中包含了函数,如myfunc(t1.id)》1,其中函数代价是根据函数自身的实现所计算出来的,不同函数自身包含的需要执行的操作不同,比如函数中有对于表的非索引字段的扫描操作,则函数代价中就要累加该表的全局扫描代价,因此,函数代价的计算是通过计算数据库系统自身对各种不同操作的代价,再将不同操作的代价累加得到的。
73.本技术实施例中,基于每个过滤条件的执行代价确定每个第一等级值,基于连接条件的执行代价确定第二等级值,不同情况的执行代价不同,因此根据实际需求计算谓词条件的执行代价,执行代价越高,需要计算消耗的时间越多,sql的执行效率也就越低,因此将执行代价较高的过滤条件上拉到连接条件之上执行,可以有效地减少对于比较复杂的过滤条件频繁的操作次数,进而有效提升sql查询的执行效率。
74.可选地,结合图1如图3所示,上述步骤101中第一等级值的计算具体可以通过下述步骤101b实现,上述步骤102中第二等级值的计算具体可以通过下述步骤102b实现。
75.101b、基于每个过滤条件的执行代价和选择率,计算得到相应的第一等级值。
76.其中,第一等级值用于表征过滤条件的复杂性和选择性。
77.102b、基于连接条件的执行代价和选择率,计算得到第二等级值。
78.其中,第一等级值用于表征连接条件的复杂性和选择性。
79.可以理解,选择率是指根据过滤条件或者连接条件确定的被选中的元组数量与所有元组数量的比值,即:选择率(selectrate)=选中的元组数量/所有元组数量。
80.其中,元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性,在二维表里,元组也称为行。
81.可以理解,基于选择率和执行代价计算等级值的方法可以依据实际需求确定,本技术实施例不做具体限定。示例性地,等级值=(selectrate-1)/cost。
82.本技术实施例中,基于每个过滤条件的执行代价和选择率确定每个第一等级值,基于连接条件的执行代价和选择率确定第二等级值;因为如果过滤条件中包含复杂函数,但是依据该过滤条件选中的元组的数量很少,那么再对数量很少的元组做操作的执行效率相对会提高,因此,等级值的计算将选择率也考虑进去,进一步限定了对于执行代价高但选择率低的过滤条件,计算得到的等级值较低,这种情况下无需将该过滤条件上拉到连接条件之上执行,进而优化了sql查询的策略,提升了sql查询的执行效率。
83.可选地,上述步骤103中至少一个第三等级值对应的过滤条件按照对应的等级值的大小从小到大执行;即将所有上拉到连接条件之上执行的过滤条件按照等级值的大小从小到大执行。
84.可以理解,上拉到连接条件之上执行的过滤条件可能不止一个,按照等级值的大小从小到大执行,因为等级值越小执行效率越高,相对于先执行等级值高的过滤条件,再执行等级值低的过滤条件,先根据等级值小的过滤条件过滤掉一部分元组,剩下的结果集会变小,再对结果集执行等级值高的过滤条件的计算量和耗时都会更小,因此,可以有效提升sql查询的执行效率。
85.本技术实施例中,对于上拉到连接条件之上执行的多个过滤条件按照等级值的大小从小到大执行,先执行等级值低的过滤条件可以过滤掉一部分元组,再执行等级值高的过滤条件,可以使得等级值高的过滤条件被重复执行的次数减少,进而提升了sql的执行效率;因为一部分元组先通过等级值较低的过滤条件过滤掉了,剩下的结果集变小,则执行等级值较高的过滤条件需要扫描的是结果集,因此,等级值较高的过滤条件被重复执行的次数减少,sql的执行效率得到有效地提升。
86.可选地,上述步骤104中至少一个第四等级值对应的过滤条件按照对应的等级值的大小从小到大执行;即将所有下推到连接条件之下执行的过滤条件按照等级值的大小从小到大执行。
87.可以理解,下推到连接条件之下执行的过滤条件可能不止一个,按照等级值的大小从小到大执行,因为等级值越小执行效率越高,相对于先执行等级值高的过滤条件,再执行等级值低的过滤条件,先根据等级值小的过滤条件过滤掉一部分元组,剩下的结果集更小,再对结果集执行等级值高的过滤条件的计算量和耗时都会更小,因此,可以有效地提升sql查询的执行效率。
88.本技术实施例中,对于下推到连接条件之下执行的多个过滤条件按照等级值的大小从小到大执行,先执行等级值低的过滤条件可以过滤掉一部分元组,再执行等级值高的过滤条件,可以使得等级值高的过滤条件被重复执行的次数减少,进而提升了sql的执行效率;因为一部分元组先通过等级值较低的过滤条件过滤掉了,剩下的结果集更小,则执行等级值较高的过滤条件需要扫描的是结果集,因此,等级值较高的过滤条件被重复执行的次数减少,sql查询的执行效率得到有效地提升。
89.可选地,结合图3如图4所示,上述步骤104之后,该方法还包括下述步骤105。
90.105、在n个第一等级值中包括大于或等于等级阈值的第一等级值的情况下,保存sql语句的执行结果。
91.可以理解,等级阈值可以是根据历史经验预设的,也可以是根据实时数据计算的,具体可以根据实际情况确定,本技术实施例不做具体限定。示例性地,等级阈值可以是sql语句中包含的所有自定义函数的执行代价值中的最小值。
92.本技术实施例中,对于sql语句中包含比较复杂耗时的过滤条件的情况,将sql语句的执行结果进行保存;因为同样的sql语句经常被重复执行,如果sql语句中包含比较复杂耗时的过滤条件,每次执行都要进行复杂的计算,耗费大量的时间,因此将第一次的执行结果进行保存,之后遇到同样的sql语句就可以直接调取已保存的结果,无需重复执行该复杂的过滤条件,从而进一步提高整个sql的执行效率。
93.示例性地,如图5所示,下述步骤501至步骤506为一种可选地对关系型数据库查询优化的流程。
94.501、查询开始。
95.502、基于每个谓词条件的执行代价和选择率,计算出等级值;
96.其中,谓词条件包括连接条件和过滤条件。
97.503、过滤条件的等级值是否不小于连接条件的等级值并且过滤条件中含有等级值大于等级阈值的函数;
98.是则执行步骤504,否则执行步骤505。
99.504、将过滤条件上拉到连接条件之上执行,多个过滤条件按等级值从小到大执行,缓存执行结果。
100.505、将过滤条件下推到连接条件之下执行,多个过滤条件按等级值从小到大执行。
101.506、结束。
102.图5为本技术实施例示出的一种关系型数据库查询优化装置的结构框图,如图6所示,包括:计算模块601和执行模块602;计算模块601,用于计算sql语句的n个过滤条件中每个过滤条件的第一等级值,得到n个第一等级值,sql语句用于对至少两个基表进行连接查询;计算sql语句的连接条件的第二等级值;执行模块602,用于在n个第一等级值中存在至少一个第三等级值的情况下,将每个第三等级值对应的过滤条件上拉到连接条件之上执行;在n个第一等级值中存在至少一个第四等级值的情况下,将每个第四等级值对应的过滤条件下推到连接条件之下执行;其中,每个第三等级值大于或等于第二等级值,每个第四等级值小于所述第二等级值,n为正整数。
103.可选地,每个第三等级值对应的过滤条件中存在执行代价大于或等于代价阈值的函数。
104.可选地,该计算模块601,具体用于基于每个过滤条件的执行代价,计算得到相应的第一等级值;基于连接条件的执行代价,计算得到第二等级值。
105.可选地,该计算模块601,具体用于基于每个过滤条件的执行代价和选择率,计算得到相应的第一等级值;基于连接条件的执行代价和选择率,计算得到第二等级值。
106.可选地,该执行模块602,具体用于至少一个第三等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
107.可选地,该执行模块602,具体用于至少一个第四等级值对应的过滤条件按照对应的等级值的大小从小到大执行。
108.可选地,本技术实施例提供的一种关系型数据库查询优化装置还包括保存模块603,该保存模块603,用于在将每个第四等级值对应的过滤条件下推到连接条件之下执行之后,在n个第一等级值中包括大于或等于等级阈值的第一等级值的情况下,保存sql语句的执行结果。
109.需要说明的是:如图6所示,关系型数据库查询优化装置600中一定包括的模块用实线框示意,如计算模块601和执行模块602;关系型数据库查询优化装置600中可以包括也可以不包括的模块用虚线框示意,如保存模块603。
110.需要说明的是,上述关系型数据库查询优化装置可以为本技术上述方法实施例中的电子设备,也可以是该电子设备中能够实现该装置实施例功能的功能模块和/或功能实体,本技术实施例不做限定。
111.本技术实施例中,各模块可以实现上述方法实施例提供的关系型数据库查询优化方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
112.本实施例中各种实现方式具有的有益效果具体可以参见上述关系型数据库查询优化方法实施例中相应实现方式所具有的有益效果,为避免重复,此处不再赘述。
113.本技术实施例还提供一种电子设备,该电子设备可以包括:处理器701,存储器702以及存储在存储器702上并可在处理器701上运行的程序或指令,该程序或指令被处理器
701执行时可以实现上述方法实施例提供的关系型数据库查询优化方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
114.本技术实施例提供一种可读存储介质,该可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现上述方法实施例提供的关系型数据库查询优化方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
115.本技术实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序或指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序或指令,实现上述方法实施例提供的关系型数据库查询优化方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
116.本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述关系型数据库查询优化方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
117.应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
118.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置,服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
119.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
120.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
121.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
122.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献