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

数据库的多表查询方法、装置、电子设备和存储介质与流程

2022-06-25 03:09:18 来源:中国专利 TAG:


1.本技术涉及数据处理领域,尤其涉及一种数据库的多表查询方法、装置、电子设备和存储介质。


背景技术:

2.在对以关系模型为基础的关系型数据库进行多表查询时,往往需要执行一条复杂的查询语句才能实现从多个不同的表中提取信息,并且查询语句越复杂,涉及的关系越多,搜索空间中根据查询语句生成的可行的查询计划越多,进行查询优化以确定出最优查询计划就越复杂,查询效率也越低。并且数据表个数的增多还会导致关系数目的增加,进而导致可行查询计划的数目呈指数增长,使得搜索空间中可行的查询计划数量过于庞大,进而大大增加确定最优查询计划过程中计算的复杂性。为了解决上述问题,一种常见的解决方案是将部分可行的查询计划作为初始种群,利用遗传算法进行迭代,直到迭代终止,得到最优查询计划。
3.然而,与传统算法相比,尽管遗传算法的优化速度和效果都有了极大提高,使得查询效率大大提升,但在多表查询的过程中,查询优化还是会出现“早熟”现象,即陷入局部最优解,无法得到实际最优的查询计划,以及计划生成时间较长,即迭代时间较长,查询效率低的问题。


技术实现要素:

4.本技术实施例目的在于解决上述问题,提供一种数据库的多表查询方法、装置、电子设备和存储介质,以使在对数据库进行多表查询时,能够避免出现“早熟”现象的出现且有效地提高查询效率。
5.为达到上述目的,本技术的实施例提供了一种数据库的多表查询方法,包括:基于预设的遗传算法进行迭代,得到包含若干个体的第i代种群,其中,每个所述个体为若干查询步骤组成的序列;从所述第i代种群中筛选出预设数量的所述个体,得到第i代抗体群,所述个体为若干查询步骤组成的序列;统计当前得到的所述第i代抗体群和历史得到的各抗体群中同一次序上的不同所述查询步骤出现的概率;将各个次序中所述概率最高的所述查询步骤组成序列,得到第i代疫苗;根据所述第i代疫苗对所述第i代种群中的所述个体进行疫苗接种;在检测到疫苗接种后的所述第i代种群满足迭代终止条件的情况下,从疫苗接种后的所述第i代种群中选择执行代价最小的所述个体进行多表查询。
6.为达到上述目的,本技术的实施例还提供了一种数据库的多表查询装置,包括:迭代模块,用于基于预设的遗传算法进行迭代,得到包含若干个体的第i代种群,其中,每个所述个体为若干查询步骤组成的序列;抗体生成模块,用于从所述第i代种群中筛选出预设数量的所述个体,得到第i代抗体群,所述个体为若干查询步骤组成的序列;统计模块,用于统计当前得到的所述第i代抗体群和历史得到的各抗体群中同一次序上的不同所述查询步骤出现的概率;疫苗生成模块,用于将各个次序中所述概率最高的所述查询步骤组成序列,得
到第i代疫苗;疫苗接种模块,用于根据所述第i代疫苗对所述第i代种群中的所述个体进行疫苗接种;查询模块,用于在检测到疫苗接种后的所述第i代种群满足迭代终止条件的情况下,从疫苗接种后的所述第i代种群中选择执行代价最小的所述个体进行多表查询。
7.为达到上述目的,本技术的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的任一项数据库的多表查询方法。
8.为解决上述技术问题,本技术的实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据库的多表查询方法。
9.本技术的实施例提出的分布式数据连接查询优化方法,在基于预设的遗传算法迭代得到第i代种群后,从第i代种群中筛选出预设数量的个体,得到第i代抗体群,个体为若干查询步骤组成的序列;统计当前得到的第i代抗体群和历史得到的各抗体群中同一次序上的不同查询步骤出现的概率;将各个次序中概率最高的查询步骤组成序列,得到第i代疫苗;根据第i代疫苗对第i代种群中的个体进行疫苗接种;在检测到疫苗接种后的第i代种群满足迭代终止条件的情况下,从疫苗接种后的第i代种群中选择执行代价最小的个体进行多表查询,由于利用遗传算法进行迭代的过程实际是不断从若干查询步骤组成的序列中剔除代价高的查询步骤,保留代价小的查询步骤,出现次数越多的查询步骤一般执行代价也越小,因此,上述过程可以将疫苗的抽取范围扩大到当前获取的抗体群和历史获取的抗体群,从而增大优秀基因片段,即代价小的查询步骤的选取范围,避免遗漏代价小的查询步骤,与此同时还能为计算同一次序上不同查询步骤出现的概率提供足够多的参考数据,增加计算概率的可靠性,并且上述过程还会保留同一次序中概率最高的查询步骤组成第i疫苗,使得第i代疫苗中的查询步骤是由当前获取的最优的查询步骤组成,实现了疫苗的体外再培养,使得到的优秀基因更加准确,并基于再培养得到的疫苗进行疫苗接种,增加了种群多次进化中基因多样性,给处于局部最优解的系统增加促使迭代向着最优解的方向继续优化的扰动,加快寻找最优查询步骤序列的速度,加快寻找最优查询步骤序列的速度,避免出现“早熟”现象同时有效地提高查询效率。
附图说明
10.图1是本技术一实施例提供的数据库的多表查询方法的流程图;
11.图2是本技术另一实施例提供的数据库的多表查询装置结构示意图;
12.图3是本技术另一实施例提供的电子设备示意图。
具体实施方式
13.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本技术各实施例中,为了使读者更好地理解本技术而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本技术所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本技术的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
14.本技术的实施例提供了一种数据库的多表查询方法,包括:在基于预设的遗传算法迭代得到第i代种群后,从第i代种群中筛选出预设数量的个体,得到第i代抗体群,个体为若干查询步骤组成的序列;统计当前得到的第i代抗体群和历史得到的各抗体群中同一次序上的不同查询步骤出现的概率;将各个次序中概率最高的查询步骤组成序列,得到第i代疫苗;根据第i代疫苗对第i代种群中的个体进行疫苗接种;在检测到疫苗接种后的第i代种群满足迭代终止条件的情况下,从疫苗接种后的第i代种群中选择执行代价最小的个体进行多表查询。此查询过程通过基于遗传算法迭代得到第i代种群,统计其查询步骤出现的概率并重新组成序列,即疫苗,对第i代种群进行接种,迭代终止后从接种后的第i代种群中选择执行代价最小的个体进行多表查询的方法,通过基于再培养得到的疫苗进行疫苗接种,增加了种群多次进化中基因多样性,加快寻找最优查询步骤序列的速度,解决了在数据库多表查询过程中,遇到连接关系多时,执行代价较大计划生成时间较长的问题,有效地提高了查询效率,避免“早熟”现象的发生,即避免了陷入局部最优解,无法实际得到最优的查询计划的问题。
15.下面对本实施例中的数据库的多表查询方法实现细节进行具体的说明,以下内容仅为本方案的实现细节,并非实现本方案的必须。
16.本技术实施例的提供了一种数据库的多表查询方法,应用于终端,如计算机等,具体流程如图1所示,可包括如下步骤:
17.步骤101:基于预设的遗传算法进行迭代,得到包含若干个体的第i代种群,其中,每个个体为若干查询步骤组成的序列。
18.具体地说,基于预设的遗传算法进行迭代包括:从当前种群,即注射疫苗后的第i-1代种群中确定父代组合,然后对确定出的每个父代组合利用预设的交叉算子进行处理,得到各个父代对应的子代,然后根据子代构建种群,并基于构建的种群,利用预设的变异算子进行处理,得到第i代种群。其中,交叉算子可以是一点交叉、两点交叉或者改进后的交叉方式,变异算子可以是实值变异、二进制变异或改进后的变异方式,此处就不再一一赘述了。
19.在一个例子中,基于预设的遗传算法进行迭代包括:首先获取若干可行的查询计划并将若干可行的查询计划确定为初始种群,每个查询计划对应一个若干查询步骤即基因组成的序列,且每个查询计划都表示种群中的一个个体,每个查询计划的执行代价能够反映该个体的适应度,执行代价越大,适应度越小,接着根据个体的适应度,按照一定选择概率pc对种群中的个体进行选择,将选择出来的个体作为父代,然后基于父代进行交叉和变异处理,保留执行代价小的个体和执行代价小的基因,得到下一代种群。特别地,基于遗传算法迭代时,第一次是针对初始种群进行选择、交叉、变异处理,第一次之后都是对上一次疫苗接种后的种群进行选择、交叉、配对处理,此处就不再一一赘述了。
20.其中,以分布式数据库为例,在进行多表数据关联查询时,由于分布式数据库中的数据分布在不同区域,不同的表之间关联条件的不同会导致生成的查询计划随之不同。而不同的表之间的联系可以表示为基关系,基关系之间的属性关联可以在数据库的数据字典中查询,并用查询图来表示。进而由于查询图可以被等价转换为查询连接树的形式,因此,可以将每个个体转化为一个连接树,如左线性树,用来衡量个体的执行代价大小,其中,tm表示第m个节点产生的中间关系,cost(tm)表示第m个中间关系的代价,则cost(s)表示一个元素s的相关联代价,tm=r
i1 jion r
i2 join r
i3

···
,join r
im
,r
i1

1代种群中各个个体的适应度;根据适应度从第i-1代种群中的个体中确定若干父代组合,每个父代组合包括两个个体;按照预设的交叉算子对每个父代组合中的两个个体进行交叉处理,生成中间种群,交叉算子为:在保留父代组合的两个个体中重合的查询步骤后,按照执行代价和/或与当前已保留的查询步骤之间的关联关系确定是否保留当前未保留的查询步骤;对中间种群进行变异处理,得到第i代种群。其中,第i-1代种群中第j个个体的适应度fj为:
[0030][0031]
其中,l为预设常数,cos(tj)为按照第i-1代种群中第j个个体中查询步骤进行查询的执行代价。特别地,第i-1代种群中第j个个体的执行代价可以采用以上两种执行代价计算方式中任一种方式进行计算,此处就不再一一赘述了。
[0032]
值得一提的是,基于第i-1代种群第j个个体,适应度函数为其当前个体执行代价估计函数的倒数乘以线性系数,满足适应度越高执行代价越小的要求,此时适应度越高个体越接近最优个体。
[0033]
在一个例子中,按照预设的交叉算子对父代组合中的两个个体进行交叉处理,生成中间种群还可以包括:保留父代组合中两个个体重合的查询步骤;不断对父代组合中的一个个体中当前未被保留且满足其上一次序的查询步骤当前已被保留的查询步骤,按照预定义条件进行遍历和保留,直到遍历完所有不重合的查询步骤,得到父代组合的交叉结果,预定义条件包括执行代价条件和/或与当前已保留的查询步骤之间的关联条件;根据交叉结果生成中间种群。
[0034]
进一步地,交叉过程可以通过如下算法实现:
[0035]
输入父代:pant1=(x1,x2,

,xn),pant2=(y1,y2,

,yn),其中,pant1表示一个个体,个体pant1中包含x1,x2,

,xn这n个连接关系,pant2表示另一个个体,其中,个体pant2包含y1,y2,

,yn这n个连接关系。上述连接关系在免疫遗传算法中表示的是基因;在pant1中随机选取一个连接关系将其命名为x
tmp
,表示为x
tmp
=random(pant1);从pant2中找到与x
tmp
相同的基因yj,此时将x
tmp
加入new_pant中,即,z1=x
tmp
,其中,new_pant表示一个新的个体;循环判断是否遍历完全部基因n,若是,则结束;若否,则判断x
tmp 1
和y
j 1
是否均在new_pant,若是,则比较和大小,将代价较小的基因和从另一个父代基因中找到该基因相同的基因块一同加入new_pant中,返回仍用上述循环条件步骤进行判断。若否,则开始对x
tmp
和y
j 1
有任意一个关系在new_pant中进行讨论,并对三种情况进行不同的操作,若x
tmp
在new_pant中,y
j 1
不在new_pant中,则x
tmp
=y
j 1
,zk=x
tmp
,若x
tmp
不在new_pant中,若y
j 1
在new_pant中,则x
tmp
=x
tmp 1
,zk=x
tmp
,若均不在,则x
tmp 1
=x
tmp 2
,y
j 1
=y
j 2
,重复在new_pant中寻找x
tmp 1
和y
j 1
的步骤,直到找到zk为止。
[0036]
在基于上述例子通过父代交叉得到部分子代后,还采用轮盘赌的方式将种群规模恢复,例如,可以利用轮盘赌方式选择父代中的优秀个体,然后将父代优秀个体直接复制到子代等。
[0037]
步骤102:从第i代种群中筛选出预设数量的个体,得到第i代抗体群,其中,个体为若干查询步骤组成的序列。
[0038]
需要说明的是,筛选出预设数量的个体可以是按照适应度对所有个体进行排列,
然后保留预设数量的前若干个个体,组成抗体群,当然,也可以是基于个体适应度和轮盘赌算法选择预设数量的若干个体等,此处就不再一一赘述了。
[0039]
步骤103:统计当前得到的第i代抗体群和历史得到的各抗体群中同一次序上的不同查询步骤出现的概率。
[0040]
步骤104:将各个次序中概率最高的查询步骤组成序列,得到第i代疫苗。
[0041]
在一个例子中,假设每代种群中有lb个最优抗体,则从种群开始到当前i代共保留l*lb个最优抗体种群,每个抗体的每个基因位有l1,l2,
···
,l3共s个符号可供选择,第j个等位基因lj的概率可以表示为:
[0042][0043]
其中,p
u,v
为次序u上的第v种查询步骤的概率,lb为第i代抗体群种个体的数量,g
u,v
为次序u上的第v种查询步骤,g
u,k
为次序u上的第k个查询步骤,k=1,2,

,i
×
lb,v∈[1,lb]且v为正整数。
[0044]
需要说明的是,从基因的角度而言,gi=kj时取aj=1,gi为种群中第i个等位基因的符号。将该等位基因上最大概率的kj作为该等位基因上的疫苗片段,则最终疫苗可表示为h=h1h2hi。
[0045]
值得一提的是,在遗传算法后期,由于选择和交叉操作,父代优秀基因通过遗传在子代中所占比例增高,种群中适应度高的个体占绝大部分可能会导致陷入局部最优解,即出现了“早熟”现象,若出现此现象,则说明得到的多表关联查询连接顺序并非是多表查询的最优解。而对于抗体群来说,其内适应度较高的个体中含有解决问题的特征信息,将各个次序中概率最高的查询步骤组成序列,获取到新的疫苗,即第i代疫苗,在群体进化过程中每代适应度值较高的抗体中提取有效基因,从而制作疫苗,给处于局部最优解的系统增加促使迭代向着最优解的方向继续优化的扰动,加快寻找最优查询步骤序列的速度,加快寻找最优查询步骤序列的速度,避免出现“早熟”现象。
[0046]
步骤105:根据第i代疫苗对第i代种群中的个体进行疫苗接种。
[0047]
具体地说,在获取第i代疫苗后,需要对种群进行接种,按照接种疫苗概率a采取轮盘赌的方式选择出一个或者多个基因片段,通过替换原免疫个体中的基因码值来产生新的免疫个体,从而获取到更优种群,其中,接种疫苗概率a可以为预设值。
[0048]
需要说明的是,由于个体的适应度越大被选中的概率也就越大,个体的适应度即作为了选中概率,根据上述选中概率分别在各个种群中选取个体,从而保证了适应度越高的个体越大概率被选中,所以采用轮盘赌的方式可以保证在选择基因片段时越大概率的选择到适应度大的基因片段作为父代。
[0049]
步骤106:检测到疫苗接种后的第i代种群是否满足迭代终止条件,若是,执行步骤107,若否,执行步骤108。
[0050]
步骤107:从疫苗接种后的第i代种群中选择执行代价最小的个体进行多表查询。
[0051]
需要说明的是,执行代价的计算方式如步骤101中给出的说明,此处就不再一一赘
述了。
[0052]
步骤108:i=i 1。
[0053]
具体地说,在检测到疫苗接种后的第i代种群满足迭代终止条件的情况下,从疫苗接种后的第i代种群中选择执行代价最小的个体进行多表查询,其中执行代价大小具体衡量操作上面已经提到,此处不再一一赘述。
[0054]
此外,本领域技术人员应当理解的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0055]
本技术实施例还涉及一种数据库的多表查询装置,如图2所示,包括:
[0056]
迭代模块201,用于基于预设的遗传算法进行迭代,得到包含若干个体的第i代种群,其中,每个个体为若干查询步骤组成的序列。
[0057]
抗体生成模块202,用于从第i代种群中筛选出预设数量的个体,得到第i代抗体群。
[0058]
统计模块203,用于统计当前得到的第i代抗体群和历史得到的各抗体群中同一次序上的不同查询步骤出现的概率。
[0059]
疫苗生成模块204,用于将各个次序中概率最高的查询步骤组成序列,得到第i代疫苗。
[0060]
疫苗接种模块205,用于根据第i代疫苗对第i代种群中的个体进行疫苗接种。
[0061]
查询模块206,用于在检测到疫苗接种后的第i代种群满足迭代终止条件的情况下,从疫苗接种后的第i代种群中选择执行代价最小的个体进行多表查询。
[0062]
在一个例子中,迭代模块201用于获取疫苗接种后的第i-1代种群;根据执行代价确定第i-1代种群中各个个体的适应度;根据适应度从第i-1代种群中的个体中确定若干父代组合,父代组合包括两个个体;按照预设的交叉算子对父代组合中的两个个体进行交叉处理,生成中间种群,交叉算子为:在保留父代组合的两个个体中重合的查询步骤后,按照执行代价和/或与当前已保留的查询步骤之间的关联关系确定是否保留当前未保留的查询步骤;对中间种群进行变异处理,得到第i代种群。
[0063]
在一个例子中,迭代模块201用于保留父代组合中两个个体重合的查询步骤;不断对父代组合中的一个个体中当前未被保留且满足其上一次序的查询步骤当前已被保留的查询步骤,按照预定义条件进行遍历和保留,直到遍历完所有不重合的查询步骤,得到父代组合的交叉结果,预定义条件包括执行代价条件和/或与当前已保留的查询步骤之间的关联条件;根据交叉结果生成中间种群。
[0064]
在一个例子中,迭代模块201还用于根据如下表达式确定第i-1代种群中各个个体的适应度:
[0065][0066]
其中,fj为第i-1代种群中第j个个体的适应度,l为预设常数,cos(tj)为按照第i-1代种群中第j个个体中查询步骤进行查询的执行代价。
[0067]
在一个例子中,统计模块202用于根据如下表达式统计当前得到的第i代抗体群和
历史得到的各抗体群中同一次序上的不同查询步骤出现的概率:
[0068][0069]
其中,p
u,v
为次序u上的第v种查询步骤的概率,lb为第i代抗体群种个体的数量,g
u,v
为次序u上的第v种查询步骤,g
u,k
为次序u上的第k个查询步骤,k=1,2,

,i
×
lb,v∈[1,lb]且v为正整数。
[0070]
在一个例子中,迭代模块201还用于若检测到疫苗接种后的第i代种群中不存在满足预设条件的个体,基于遗传算法对疫苗接种后的第i代种群进行迭代,得到第i 1代种群。
[0071]
在一个例子中,查询模块205还用于将执行代价最小的个体确定为最优查询计划;将最优查询计划通过代理服务器下发给分布式数据库中相应的数据存储节点(data base,db),通过db根据最优查询计划进行多表查询。
[0072]
不难发现,本实施例为与上述方法实施例相对应的装置实施例,本实施例可与上述方法实施例互相配合实施。上述方法实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述方法实施例中实现。
[0073]
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本技术的创新部分,本实施例中并没有将与解决本技术所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
[0074]
本技术实施例还提供了一种电子设备,如图3所示,包括:包括至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行上述任一方法实施例所描述的数据库的多表查询方法。
[0075]
其中,存储器302和处理器301采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器301和存储器302的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器301处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传输给处理器301。
[0076]
处理器301负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器302可以被用于存储处理器301在执行操作时所使用的数据。
[0077]
本技术实施例还提供了一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
[0078]
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以
通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0079]
本领域的普通技术人员可以理解,上述各实施例是实现本技术的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。
再多了解一些

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

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

相关文献