CN104794130A - 一种表间关联查询方法和装置 - Google Patents
一种表间关联查询方法和装置 Download PDFInfo
- Publication number
- CN104794130A CN104794130A CN201410026270.XA CN201410026270A CN104794130A CN 104794130 A CN104794130 A CN 104794130A CN 201410026270 A CN201410026270 A CN 201410026270A CN 104794130 A CN104794130 A CN 104794130A
- Authority
- CN
- China
- Prior art keywords
- query
- identifier
- mth
- condition
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000004891 communication Methods 0.000 claims description 5
- 230000000875 corresponding effect Effects 0.000 description 144
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种表间关联查询方法和装置,能够减小表间关联查询的时间,提高表间关联查询速度。方法包括:获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果;根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系;根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。本发明适用于计算机领域。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种表间关联查询方法和装置。
背景技术
在数据仓库与在线联机分析处理(OLAP)领域,查询的快速响应尤为重要,在OLAP领域,查询需要处理G级、T级甚至P级的数据量,在如此大数据量的情况下,要求查询的快速响应,对数据库处理性能提出很大挑战,在大量的查询语句中,都会包含两表间的关联join操作,并且占据了主要的查询时间,因此提升表间关联查询速度对数据库查询性能尤为重要。
现有技术中,有如下两种表间关联查询的方向:
第一,分别在两表中根据选择条件进行查询,最后对选择后的结果进行join操作;
第二,首先根据第一表中的选择条件在第一表中进行查询获得第一结果,接着将第一结果与第二表进行join操作,然后在join操作结果上根据第二表中的选择条件进行查询,获得第二结果,最后将第一结果与第二结果进行join操作,更新第一结果。
由于上述两种表间查询的方向中均涉及至少一次join操作,而join操作需要对表进行遍历,因此消耗时间较大,虽然现有技术中针对第二方向提出了一些改进方案,例如具体实施方式部分的示例,但是由于仍存在至少一次join操作,因此消耗时间仍然较大,降低了表间关联查询的速度,影响了查询性能。
发明内容
本发明的实施例提供一种表间关联查询方法和装置,能够减小表间关联查询的时间,提高表间关联查询的速度。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种表间关联查询方法,所述方法包括:
获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;
根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
在第一方面第一种可能的实现方式中,结合第一方面,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM;
根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
在第一方面第二种可能的实现方式中,结合第一方面第一种可能的实现方式,所述根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
在第一方面第三种可能的实现方式中,结合第一方面,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM;
根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
在第一方面第四种可能的实现方式中,结合第一方面第三种可能的实现方式,所述根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
在第一方面第五种可能的实现方式中,结合第一方面至第一方面第四种可能的实现方式,所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
在第一方面第六种可能的实现方式中,结合第一方面至第一方面第四种可能的实现方式,在所述根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,还包括:
确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
若所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
第二方面,提供一种表间关联查询装置,所述装置包括消息获取单元、关系建立单元、结果获取单元;
所述消息获取单元,用于获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
所述关系建立单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;
所述结果获取单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中每个表内的选择条件,以及所述关系建立单元建立的所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
在第二方面第一种可能的实现方式中,结合第二方面,所述结果获取单元包括查询模块、第一执行模块、第一获取模块;
所述查询模块,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
所述第一执行模块,用于根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述关系建立单元建立的所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM;
所述第一获取模块,用于根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
在第二方面第二种可能的实现方式中,结合第二方面第一种可能的实现方式,所述第一获取模块具体用于:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
在第二方面第三种可能的实现方式中,结合第二方面,所述结果获取单元包括查询模块、第二执行模块、第二获取模块;
所述查询模块,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
所述第二执行模块,用于根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM;
所述第二获取模块,用于根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
在第二方面第四种可能的实现方式中,结合第二方面第三种可能的实现方式,所述第二获取模块具体用于:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
在第二方面第五种可能的实现方式中,结合第二方面至第二方面第四种可能的实现方式,所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
在第二方面第六种可能的实现方式中,结合第二方面至第二方面第四种可能的实现方式,所述装置还包括确定单元、排序单元;
所述确定单元,用于在所述关系建立单元根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
所述排序单元,用于若所述确定单元确定所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
第三方面,提供一种表间关联查询装置,所述装置包括处理器与存储器,所述存储器与所述处理器通信,所述存储器中存储程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行如第一方面任一项所述的方法。
本发明实施例提供一种表间关联查询方法和装置,所述方法包括:获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。基于本发明实施例提供的表间关联查询方法和装置,由于在获取查询指示消息之后,根据所述查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立了所述第M表与所述第M+1表的第M对应关系,并且所述第M对应关系中包含第M标识对应所述第M+1标识的次数,使得在根据查询指示消息中携带的N个表中每个表内的选择条件获得每个表内相应的查询结果之后,可以根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,在该查询结果的基础上快速得到第一查询结果,无需进行join操作对查询结果依次进行遍历,减小了表间关联查询的时间,提高了查询速度,进而提升了查询性能。
附图说明
图1为本发明实施例一提供的一种表间关联查询方法流程示意图;
图2为本发明实施例一提供的一种第一对应关系示例图;
图3为本发明实施例二提供的一种表间关联查询方法流程示意图;
图4为本发明实施例二提供的一种对应图3表间关联查询方法的实例方法流程图;
图5为本发明实施例二提供的一种对应图4实例方法流程图的数据流示意图;
图6为本发明实施例二提供的另一种表间关联查询方法流程示意图;
图7为本发明实施例二提供的一种对应图6表间关联查询方法的实例方法流程图;
图8为本发明实施例二提供的一种对应图7实例方法流程图的数据流示意图;
图9为本发明实施例二提供的另一种对应图6表间关联查询方法的实例方法流程图;
图10为本发明实施例二提供的一种对应图9实例方法流程图的数据流示意图;
图11为本发明实施例三提供的一种表间关联查询装置结构示意图一;
图12为本发明实施例三提供的一种表间关联查询装置结构示意图二;
图13为本发明实施例三提供的一种表间关联查询装置结构示意图三;
图14为本发明实施例三提供的一种表间关联查询装置结构示意图四;
图15为本发明实施例四提供的一种表间关联查询装置结构示意图。
具体实施方式
在数据库中表做join操作时,2个表存在1:N的关系,其中“N”对应的表称为join操作中的“大表”,“1”对应的表称为join操作中的小表,此定义适用于本发明下述各实施例。
假设存在如下两表:
表a:customer(c_custkey,c_name,primary key(c_custkey)),
表b:orders(o_orderkey,o_custkey,o_orderdate,primary key(o_orderkey),
foreign key(o_custkey)REFERENCES customer(o_custkey));
其中表a与表b的数据分别如下:
需要说明的是,表a中可能存在不止c_name一个属性,表b中可能存在不止o_orderdate一个属性,两表中均可能存在其它属性,此处仅是示例性列举其中一个属性进行举例说明,对表中属性不作具体限定。
表a
c_oid | c_custkey | c_name |
0 | 1 | “小明” |
1 | 2 | “小王” |
2 | 3 | “小张” |
3 | 4 | “小李” |
4 | 5 | “小军” |
表b
o_oid | o_custkey | o_orderdate |
0 | 2 | 2012-9-02 |
1 | 5 | 2012-9-07 |
2 | 4 | 2012-9-10 |
3 | 3 | 2012-8-21 |
4 | 3 | 2012-8-02 |
5 | 1 | 2012-9-26 |
6 | 2 | 2012-8-20 |
7 | 4 | 2012-8-09 |
8 | 2 | 2012-9-15 |
现有查询语句A:select o_orderkey from orders,customerwhere c_name in{“小王”,“小张”}and o_orderdate>“2012-9-01”and o_custkey=c_custkey;
首先,给出一组现有技术中的表间查询方法:
方法一,以背景技术中的第一个表间关联查询方向为例进行说明,执行过程如下:
1)在customer表中做选择条件c_name in{“小王”,小张”},选择得到满足条件的c_oid为(1,2);
2)在orders表中做选择条件o_orderdate>“2012-9-01”,选择得到满足条件的o_oid为(0,1,2,5,8);
3)根据满足条件的c_oid与o_oid,进行join操作,其中,关联条件为o_custkey=c_custkey,若用表a关联表b,则当表a中的c_oid为1时,遍历表b中o_oid为(0,1,2,5,8)的表项,得到符合关联条件的o_oid为(0,8),当表a中的c_oid为2时,遍历表b中o_oid为(0,1,2,5,8)的表项,得到不存在符合关联条件的o_oid;若用表b关联表a,则当表b中o_oid为0时,遍历表a中c_oid为(2,3)的表项,得到符合关联条件的c_oid为(1),同理,当表b中的o_oid分别为1,2,5,8时,依次重复执行上述过程,得到最终满足条件的c_oid为(1),o_oid为(0,8)。
由上述查询过程可以得知,在对选择后的结果进行join操作时,不论是表a关联表b,还是表b关联表a,均需要依次遍历选择结果,该过程在数据量较大的情况下,会消耗过多的时间,进而影响查询性能。
方法二,以背景技术中的第二个表间关联查询方向的改进为例进行说明,大表关联小表,执行过程如下:
1)在数据导入过程中,建立表间索引,替代之前在执行语句时才执行的十分耗时的join操作,该表间索引保存两表中主键值与外键值存在关联关系的标识号,如表一所示:
表一
o_oid | c_oid |
0 | 1 |
1 | 4 |
2 | 3 |
3 | 2 |
4 | 2 |
5 | 0 |
6 | 1 |
7 | 3 |
8 | 1 |
2)在orders表中做选择条件,找到满足条件o_orderdate>“2012-9-01”的o_oid值为(0,1,2,5,8);
3)利用得到的o_oid值和表一,找到对应的c_oid值并去重,得到的c_oid值为(1,4,3,0);
4)在上述得到的c_oid值中执行选择条件c_name in{“小王”,“小张”},得到最终满足条件的c_oid值为(1);
5)利用c_oid值(1)与2)中得到的o_oid对应c_oid值进行join操作,即当表a中的c_oid为1时,遍历表b中o_oid为(0,1,2,5,8)的表项,得到符合关联条件的o_oid为(0,8)。
由上述查询过程可以得知,该方法虽然减少了第二个表间关联查询方向的join操作次数,但是在最后一步还是需要进行join操作,该过程在数据量较大的情况下,会消耗过多的时间,进而影响查询性能。
方法三,以背景技术中的第二个表间关联查询方向的改进为例进行说明,小表关联大表,执行过程如下:
1)在数据导入过程中,建立向量表间索引,替代之前在执行语句时才执行的十分耗时的join操作,该向量表间索引保存小表的c_oid和大表的位向量Bitmap,该Bitmap的大小为大表的个数,即若该小表c_oid对应主键值与大表的外键值相等,则该位设置为1,否则为0,如表二所示:
表二
c_oid | Bitmap |
0 | 000001000 |
1 | 100000101 |
2 | 000110000 |
3 | 001000010 |
4 | 010000000 |
2)在小表customer中做选择条件,找到满足条件c_name in{“小王”,“小张”}的c_oid值为(1,2);
3)利用得到的c_oid值和表二,找到对应的向量值(100000101,000110000),即可找到对应的o_oid值为(0,3,4,6,8);
4)在上述得到的o_oid值中执行选择条件o_orderdate>“2012-9-01”,得到最终满足条件的o_oid值为(0,8);
5)使用该o_oid对应的c_oid值与2)中得到的c_oid值做join操作,得到最终满足条件的c_oid值为(1)。
由上述查询过程可以得知,同方法二类似,该方法虽然减少了第二个表间关联查询方向的join操作次数,但是在最后一步还是需要进行join操作,该过程在数据量较大的情况下,会消耗过多的时间,进而影响查询性能。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一、
本发明实施例提供一种表间关联查询方法,具体如图1所示,包括:
101、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在N个表中获取第一查询结果。
其中,所述第一查询条件包括:所述N个表中每个表内的选择条件,以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表。
具体的,本发明实施例中,在进行表间关联查询时,表间关联查询装置会首先获取查询指示消息,该查询指示消息携带第一查询条件,指示当前需要进行关联查询。
示例性的,假设存在表a和表b所示的2个表,由上述表a和表b对应的查询语句A:select o_orderkey from orders,customer wherec_name in{“小王”,“小张”}and o_orderdate>“2012-9-01”and o_custkey=c_custkey可知,第一查询条件包括:表a中的查询条件c_name in{“小王”,“小张”},表b中的查询条件o_orderdate>“2012-9-01”,表a的主键值与表b的外键值之间的关联关系o_custkey=c_custkey。
需要说明的是,N的取值为大于等于2的整数,即N的取值可以为2,3,4……,而1≤M≤N-1,则示例性的,若N的取值为2,则M的取值可以为1,即存在第一表、第二表2个表;若N的取值为3,则1≤M≤2,M的取值可以为1,2,即存在第一表、第二表、第三表3个表。
需要说明的是,本发明实施例中所述第一表至所述第N表为由小到大排序的表,这样可以在后续的表间关联查询中,减少索引或检索的次数,提高查询速度。
102、表间关联查询装置根据第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系。
所述第M对应关系中包含第M标识的信息、与所述第M标识对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号。
具体的,本发明实施例中,所述第M对应关系可以包括所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表;或者,
在所述根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,还包括:
确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
若所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
此时,所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
需要说明的是,本发明实施例中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号,例如,在表a与表b中,第一标识为表a中的表项序号c_oid,第二标识为表b中的表项序号o_oid。
示例性的,假设N=2,当前存在如表a和表b所示的2个表,则M取值为1,根据第一表的主键值与第二表的外键值之间的关联关系o_custkey=c_custkey,可以建立如图2所示的第一对应关系,其中,所述第一对应关系中的对应关系201为第一标识c_oid与第一标识c_oid对应第二标识o_oid的次数的对应关系、哈希链表202为第二标识o_oid与哈希值的关联链表,其中此处的哈希值为第一标识c_oid对应的主键值。
当然,除了图2所示的第一对应关系,如上所述,还存在一种建立第一对应关系的方法,即首先确定第二表中外键值相同的表项的第二标识o_oid是否连续,若不连续,对第二表中的表项进行排序,以使得第二表中外键值相同的表项的第二标识连续。
示例性的,由表b可以看出,第二表中外键值相同的表项的第二标识o_oid不连续,首先对第二表中的表项进行排序,结果如表b1:
表b1
o_oid | o_custkey | o_orderdate |
0 | 2 | 2012-9-02 |
1 | 2 | 2012-8-20 |
2 | 2 | 2012-9-15 |
3 | 5 | 2012-9-07 |
4 | 4 | 2012-9-10 |
5 | 4 | 2012-8-09 |
6 | 3 | 2012-8-21 |
7 | 3 | 2012-8-02 |
8 | 1 | 2012-9-26 |
根据第一表的主键值与第二表(表b2)的外键值之间的关联关系o_custkey=c_custkey,可以建立如表三所示的第一对应关系:
表三
c_oid | o_oid | 次数 |
1 | 0 | 3 |
4 | 3 | 1 |
3 | 4 | 2 |
2 | 6 | 2 |
0 | 8 | 1 |
需要说明的是,表b1仅是一种可能的重新排序结果,本发明实施例仅限定排序后第二表中外键值相同的表项的第二标识连续,对于o_custkey的不同取值的先后顺序,本发明实施例不作具体限定,示例性的,对第二表中的表项进行排序,结果还可以如表b2:
表b2
o_oid | o_custkey | o_orderdate |
0 | 1 | 2012-9-26 |
1 | 2 | 2012-9-02 |
2 | 2 | 2012-8-20 |
3 | 2 | 2012-9-15 |
4 | 3 | 2012-8-21 |
5 | 3 | 2012-8-02 |
6 | 4 | 2012-9-10 |
7 | 4 | 2012-8-09 |
8 | 5 | 2012-9-07 |
根据第一表的主键值与第二表(表b2)的外键值之间的关联关系o_custkey=c_custkey,可以建立如表四所示的第一对应关系:
表四
c_oid | o_oid | 次数 |
0 | 0 | 1 |
1 | 1 | 3 |
2 | 4 | 2 |
3 | 6 | 2 |
4 | 8 | 1 |
需要说明的是,所述第一对应关系仅是为了方便获取第一查询结果而建立,无论建立的第一对应关系是如表三或表四所示,还是如图2所示,还是其它可能的情况,均不影响最终的关联查询结果,本发明实施例对第M对应关系的形式不作具体限定。
103、表间关联查询装置根据第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
具体的,本发明实施例中,根据N个表中每个表内的选择条件可以获得每个表内相应的查询结果,而根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,可以在该查询结果的基础上快速得到第一查询结果,无需进行join操作,对查询结果依次进行遍历,具体的实现过程可以参考后续实施例,本发明实施例在此不再赘述。
本发明实施例提供一种表间关联查询方法,所述方法包括:获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。基于本发明实施例提供的表间关联查询方法,由于在获取查询指示消息之后,根据所述查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立了所述第M表与所述第M+1表的第M对应关系,并且所述第M对应关系中包含第M标识对应所述第M+1标识的次数,使得在根据查询指示消息中携带的N个表中每个表内的选择条件获得每个表内相应的查询结果之后,可以根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,在该查询结果的基础上快速得到第一查询结果,无需进行join操作对查询结果依次进行遍历,减小了表间关联查询的时间,提高了查询速度,进而提升了查询性能。
实施例二、
本发明实施例提供一种表间关联查询方法,所述方法以第一个表间关联查询方向为基础进行说明,具体如图3所示,包括:
301、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在N个表中获取第一查询结果。
其中,所述第一查询条件包括:所述N个表中每个表内的选择条件,以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表。
具体的,本发明实施例中,在进行表间关联查询时,表间关联查询装置会首先获取查询指示消息,该查询指示消息携带第一查询条件,指示当前需要进行关联查询。
具体的,表间关联查询装置获取查询指示消息的示例可参考实施例一中步骤101中的描述,本发明实施例在此不再赘述。
需要说明的是,N的取值为大于等于2的整数,即N的取值可以为2,3,4……,而1≤M≤N-1,则示例性的,若N的取值为2,则M的取值可以为1,即存在第一表、第二表2个表;若N的取值为3,则1≤M≤2,M的取值可以为1,2,即存在第一表、第二表、第三表3个表。
302、表间关联查询装置根据第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系。
所述第M对应关系中包含第M标识的信息、与所述第M标识对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号。
具体的,表间关联查询装置根据第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系的示例以及所述第M对应关系的形式可参考实施例一中步骤102的描述,本发明实施例在此不再赘述。
303、表间关联查询装置根据第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内查询条件的表项的第一标识。
304、表间关联查询装置根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识。
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识。
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM。
305、表间关联查询装置根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM获取所述第一查询结果。
具体的,所述根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
下面结合图3所示的实施例,假设N=2,存在如表a和表b所示的两个表,列举一个表间关联查询的实例如图4所示:
401、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在表a和表b中获取第一查询结果,其中,所述第一查询条件包括:表a和表b内的选择条件,以及表a的主键值与表b的外键值之间的关联关系。
需要说明的是,因为第一表至第N表为N个表中由小至大排序的表,因此本示例中,表a对应第一表,表b对应第二表。
402、表间关联查询装置根据第一查询条件中表a的主键值与表b的外键值之间的关联关系,建立表a和表b的第一对应关系。
具体的,本示例中假设建立的第一对应关系为如图2所示的第一对应关系。
当然第一对应关系也可以为如表三或表四所示,本发明实施例对此不作具体限定。
403、表间关联查询装置根据第一查询条件中表a内的选择条件,查询表a,并获得第一集合,其中,所述第一集合中包含满足表a内查询条件的表项的第一标识。
具体的,根据表a内的选择条件c_name in{“小王”,“小张”},可以选择得到满足条件的第一集合为(1,2),如图5所示。
404、表间关联查询装置根据第一对应关系和第一集合,确定第二集合,以及第一集合中的每个第一标识对应第二集合中的第二标识的次数T1。
具体的,第二集合与T1如图5所示。
405、表间关联查询装置根据第一查询条件中的表b内的选择条件,查询表b,选择得到满足条件的第三集合。
具体的,根据表b内的选择条件o_orderdate>“2012-9-01”,可以选择得到满足条件的第三集合为(0,5,8,1,2),如图5所示。
406、表间关联查询装置根据第二集合和第三集合,获取第四集合。
具体的,因为第二集合为(0,6,8,3,4),第三集合为(0,5,8,1,2),而第四集合中包含满足表b内选择条件,且对应第一标识的表项满足表a内选择条件的表项的第二标识,因此第四集合为第二集合与第三集合的交集(0,8)。
407、表间关联查询装置根据第四集合,更新T1。
具体的,根据第四集合(0,8),索引第一对应关系,因为索引到(0,8)对应的第一标识均为c_oid=1,因此可以得到如图5所示的T1。
408、表间关联查询装置根据第一集合、第四集合以及更新后的T1,获取第一查询结果。
具体的,如图5所示,因为第一集合中的第一标识c_oid=1对应第二标识的次数为2,第一标识c_oid=2对应第二标识的次数为0,因此可以直接得到第一查询结果为c_oid=1,o_oid=0;c_oid=1,o_oid=8。
由上述示例容易得出,本发明实施例在步骤406获取第四集合后,可以直接根据第四集合更新第一标识对应第二标识的次数,进而直接根据第一标识对应第二标识的次数确定第四集合中第二标识对应的第一标识,无需在获取第三集合后通过十分耗时的join操作获得第一查询结果,因此可以减小表间关联查询的时间,提高查询速度,进而提升查询性能。
可选的,本发明实施例还提供一种表间关联查询方法,所述方法以第二个表间关联查询方向为基础进行说明,具体如图6所示,包括:
601、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在N个表中获取第一查询结果。
其中,所述第一查询条件包括:所述N个表中每个表内的选择条件,以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表。
具体的,本发明实施例中,在进行表间关联查询时,表间关联查询装置会首先获取查询指示消息,该查询指示消息携带第一查询条件,指示当前需要进行关联查询。
具体的,表间关联查询装置获取查询指示消息的示例可参考实施例一中步骤101中的描述,本发明实施例在此不再赘述。
需要说明的是,N的取值为大于等于2的整数,即N的取值可以为2,3,4……,而1≤M≤N-1,则示例性的,若N的取值为2,则M的取值可以为1,即存在第一表、第二表2个表;若N的取值为3,则1≤M≤2,M的取值可以为1,2,即存在第一表、第二表、第三表3个表。
602、表间关联查询装置根据第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系。
所述第M对应关系中包含第M标识的信息、与所述第M标识对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号。
具体的,表间关联查询装置根据第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系的示例以及所述第M对应关系的形式可参考实施例一中步骤102的描述,本发明实施例在此不再赘述。
603、表间关联查询装置根据第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内查询条件的表项的第一标识。
604、表间关联查询装置根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识。
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识。
S3、根据所述第2M+1集合,更新所述TM。
605、表间关联查询装置根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
具体的,所述根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应第2K集合中的第K+1标识的次数,其中,1≤i≤K-1;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
下面结合图6所示的实施例,假设N=2,存在如表a和表b所示的两个表,列举一个表间关联查询的实例如图7所示:
701、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在表a和表b中获取第一查询结果,其中,所述第一查询条件包括:表a和表b内的选择条件,以及表a的主键值与表b的外键值之间的关联关系。
需要说明的是,因为第一表至第N表为N个表中由小至大排序的表,因此本示例中,表a对应第一表,表b对应第二表。
702、表间关联查询装置根据第一查询条件中表a的主键值与表b的外键值之间的关联关系,建立表a和表b的第一对应关系。
具体的,本示例中假设建立的第一对应关系为如图2所示的第一对应关系。
当然第一对应关系也可以为如表三或表四所示,本发明实施例对此不作具体限定。
703、表间关联查询装置根据第一查询条件中表a内的选择条件,查询表a,并获得第一集合,其中,所述第一集合中包含满足表a内查询条件的表项的第一标识。
具体的,根据表a内的选择条件c_name in{“小王”,“小张”},可以选择得到满足条件的第一集合为(1,2),如图8所示。
704、表间关联查询装置根据第一对应关系和第一集合,确定第二集合,以及第一集合中的每个第一标识对应第二集合中的第二标识的次数T1。
具体的,第二集合与T1如图8所示。
705、表间关联查询装置根据第一查询条件中的表b内的选择条件,查询表b内第二集合中的第二标识对应的表项,选择得到满足条件的第三集合。
具体的,根据表b内的选择条件o_orderdate>“2012-9-01”,可以选择得到满足条件的第三集合为(0,8),如图8所示。
706、表间关联查询装置根据第三集合,更新T1。
具体的,根据第三集合(0,8),索引第一对应关系,因为索引到(0,8)对应的第一标识均为c_oid=1,因此可以得到如图8所示的T1。
707、表间关联查询装置根据第一集合、第三集合以及更新后的T1,获取第一查询结果。
具体的,如图8所示,因为第一集合中的第一标识c_oid=1对应第二标识的次数为2,第一标识c_oid=2对应第二标识的次数为0,因此可以直接得到第一查询结果为c_oid=1,o_oid=0;c_oid=1,o_oid=8。
由上述示例容易得出,本发明实施例在步骤705获取第三集合后,可以直接根据第三集合更新第一标识对应第二标识的次数,进而直接根据第一标识对应第二标识的次数确定第三集合中第二标识对应的第一标识,无需在获取第三集合后通过耗时的join操作获得第一查询结果,因此可以减小表间关联查询的时间,提高查询速度,进而提升查询性能。
进一步的,下面给出一个N=3时的表间关联查询实例,三个表分别如表c、表o、表l所示,其中,简单起见,表c、表o、表l中仅列出了标识项与键值项,属性项并未列出,本发明实施例对属性项不作具体限定。
表c
c_oid | c_custkey |
0 | 1 |
1 | 2 |
2 | 3 |
3 | 4 |
表o
o_oid | o_orderkey | o_custkey |
0 | 1 | 1 |
1 | 2 | 1 |
2 | 3 | 1 |
3 | 4 | 2 |
4 | 5 | 2 |
5 | 6 | 3 |
6 | 7 | 4 |
7 | 8 | 4 |
表l
l_oid | l_orderkey |
0 | 1 |
1 | 1 |
2 | 2 |
3 | 2 |
4 | 2 |
5 | 3 |
6 | 4 |
7 | 4 |
8 | 5 |
9 | 6 |
10 | 6 |
11 | 6 |
12 | 7 |
13 | 8 |
14 | 8 |
该实例以第二个表间关联查询方向为基础进行说明,具体如图9所示,包括:
901、表间关联查询装置获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据第一查询条件在表c、表o、表l中获取第一查询结果。
其中,所述第一查询条件包括:表c、表o、表l内的选择条件,以及表c的主键值与表o的外键值之间的关联关系、表o的主键值与表l的外键值之间的关联关系。
需要说明的是,因为第一表至第N表为N个表中由小至大排序的表,因此本示例中,表c对应第一表,表o对应第二表,表l对应第三表。
902、表间关联查询装置根据第一查询条件中表c的主键值与表o的外键值之间的关联关系,建立表c和表o的第一对应关系;根据第一查询条件中表o的主键值与表l的外键值之间的关联关系,建立表o和表l的第二对应关系。
具体的,本示例中的第一对应关系可以如表五所示,第二对应关系可以如表六所示,具体的建立过程可参考实施例一步骤102的描述,此处不再赘述。
表五
c_oid | o_oid | 次数 |
0 | 0 | 3 |
1 | 3 | 2 |
2 | 5 | 1 |
3 | 6 | 2 |
表六
o_oid | l_oid | 次数 |
0 | 0 | 2 |
1 | 2 | 3 |
2 | 5 | 1 |
3 | 6 | 2 |
4 | 8 | 1 |
5 | 9 | 3 |
6 | 12 | 1 |
7 | 13 | 2 |
903、表间关联查询装置根据第一查询条件中表c内的选择条件,查询表c,并获得第一集合,其中,所述第一集合中包含满足表c内查询条件的表项的第一标识。
具体的,假设经过属性条件选择,可以选择得到满足条件的第一集合为(1,3),如图10所示。
904、表间关联查询装置根据第一对应关系和第一集合,确定第二集合,以及第一集合中的每个第一标识对应第二集合中的第二标识的次数T1。
具体的,第二集合与T1如图10所示。
905、表间关联查询装置根据第一查询条件中的表o内的选择条件,查询表o内第二集合中的第二标识对应的表项,选择得到满足条件的第三集合。
具体的,假设经过属性条件选择,可以选择得到满足条件的第三集合为(3,4,7),如图10所示。
906、表间关联查询装置根据第三集合,更新T1。
具体的,根据第三集合(3,4,7),索引第一对应关系,因为索引到(3,4)对应的第一标识为c_oid=1,(7)对应的第一标识为c_oid=3,因此可以得到如图10所示的更新后的T1。
907、表间关联查询装置根据第二对应关系和第三集合,确定第四集合,以及第三集合中的每个第二标识对应第四集合中的第三标识的次数T2。
具体的,第四集合与T2如图10所示。
908、表间关联查询装置根据第一查询条件中的表l内的选择条件,查询表l内第四集合中的第三标识对应的表项,选择得到满足条件的第五集合。
具体的,假设经过属性条件选择,可以选择得到满足条件的第五集合为(6,8),如图10所示。
909、表间关联查询装置根据第三集合,更新T2。
具体的,根据第五集合(6,8),索引第二对应关系,因为索引到(6)对应的第二标识为o_oid=3,(8)对应的第二标识为o_oid=4,因此可以得到如图10所示的T2。
910、表间关联查询装置根据更新后的T1和更新后的T2,获取第三结果,其中第三结果中包含第一集合中每个第一标识对应第四集合中的第三标识的次数T12。
具体的,本示例中N=3,因为2≤K≤N-1,因此K的取值仅为2,而1≤i≤K-1,因此i的取值仅为1,K-i=1。
需要说明的是,在根据更新后的T1和T2获取T12的过程中,因为c_oid=1对应o_oid标识出现的次数为2,即分别对应o_oid=3,o_oid=4,因此c_oid=1对应l_oid标识出现的次数为o_oid=3对应l_oid标识出现的次数与o_oid=4对应l_oid标识出现的次数的叠加,同理可以获得c_oid=3对应l_oid标识出现的次数为0。
911、表间关联查询装置根据T12、更新后的T2以及所述第一集合、所述第三集合、所述第五集合,获取所述第一查询结果。
具体的,第一查询结果如图10所示。
当然,若N=4,在获取第三结果之后,还需要根据第三结果,更新后的T3以及更新后的T4,获取第四结果,其中,第四结果中包含第三集合中每个第二标识对应第六集合中的第四标识的次数、第一集合中每个第一标识对应第六集合中的第四标识的次数;若N=5,6,7……,则依此类推,本发明实施例在此不再一一列举。
另外,第一个表间关联查询方向N>2时的表间关联查询方法可参考图9所示的示例,本发明实施例在此不再一一列举。
本发明实施例提供一种表间关联查询方法,所述方法包括:获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。基于本发明实施例提供的表间关联查询方法,由于在获取查询指示消息之后,根据所述查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立了所述第M表与所述第M+1表的第M对应关系,并且所述第M对应关系中包含第M标识对应所述第M+1标识的次数,使得在根据查询指示消息中携带的N个表中每个表内的选择条件获得每个表内相应的查询结果之后,可以根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,在该查询结果的基础上快速得到第一查询结果,无需进行join操作对查询结果依次进行遍历,减小了表间关联查询的时间,提高了查询速度,进而提升了查询性能。
实施例三、
本发明实施例提供一种表间关联查询装置1100,具体如图11所示,所述装置1100包括消息获取单元1101、关系建立单元1102、结果获取单元1103。
所述消息获取单元1101,用于获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表。
所述关系建立单元1102,用于根据所述消息获取单元1101获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号。
所述结果获取单元1103,用于根据所述消息获取单元1101获取的查询指示消息中携带的第一查询条件中所述N个表中每个表内的选择条件,以及所述关系建立单元1102建立的所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
一种可能的实现方式中,如图12所示,所述结果获取单元1103包括查询模块11031、第一执行模块11032、第一获取模块11033。
所述查询模块11031,用于根据所述消息获取单元1101获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识。
所述第一执行模块11032,用于根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述关系建立单元1102建立的所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM。
所述第一获取模块11033,用于根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
进一步的,所述第一获取模块11033具体用于:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
另一种可能的实现方式中,如图13所示,所述结果获取单元1103包括查询模块11031、第二执行模块11034、第二获取模块11035。
所述查询模块11031,用于根据所述消息获取单元1101获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识。
所述第二执行模块11034,用于根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM。
所述第二获取模块11035,用于根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
进一步的,所述第二获取模块11035具体用于:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
具体的,所述第M对应关系可以包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
可选的,如图14所示,所述装置1100还包括确定单元1104、排序单元1105。
所述确定单元1104,用于在所述关系建立单元1102根据所述消息获取单元1101获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,确定所述第M+1表中外键值相同的表项的第M+1标识是否连续。
所述排序单元1105,用于若所述确定单元1104确定所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续。
所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
具体的,通过所述表间关联查询装置1100进行表间关联查询的方法可参考实施例一或实施例二的描述,本发明实施例在此不再赘述。
本发明实施例提供一种表间关联查询装置,包括:消息获取单元,用于获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;关系建立单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;结果获取单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中每个表内的选择条件,以及所述关系建立单元建立的所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。基于本发明实施例提供的表间关联查询装置,由于在消息获取单元获取查询指示消息之后,关系建立单元根据所述查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立了所述第M表与所述第M+1表的第M对应关系,并且所述第M对应关系中包含第M标识对应所述第M+1标识的次数,使得结果获取单元在根据查询指示消息中携带的N个表中每个表内的选择条件获得每个表内相应的查询结果之后,可以根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,在该查询结果的基础上快速得到第一查询结果,无需进行join操作对查询结果依次进行遍历,减小了表间关联查询的时间,提高了查询速度,进而提升了查询性能。
实施例四、
本发明实施例提供一种表间关联查询装置1500,所述装置1500能够用于执行上述方法实施例中的相应操作,具体如图15所示,所述装置1500包括处理器1501与存储器1502,所述存储器1502与所述处理器1501通信,所述存储器1502中存储程序代码,且所述处理器1501用于调用所述存储器1502中存储的程序代码,执行下述操作:
获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;
根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
一种可能的实现方式中,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果可以包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM;
根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
具体的,所述根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果可以包括:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
另一种可能的实现方式中,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果可以包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM;
根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
具体的,所述根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
具体的,所述第M对应关系可以包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
可选的,在所述根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,还包括:
确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
若所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
所述第M对应关系可以包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
具体的,通过所述表间关联查询装置1500进行表间关联查询的方法可参考实施例一或实施例二的描述,本发明实施例在此不再赘述。
基于本发明实施例提供的表间关联查询装置,因为所述处理器可以调用并执行所述存储器中存储的程序代码,使得所述表间关联查询装置可以在获取查询指示消息之后,根据所述查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,并且所述第M对应关系中包含第M标识对应所述第M+1标识的次数,进而所述表间关联查询装置在根据查询指示消息中携带的N个表中每个表内的选择条件获得每个表内相应的查询结果之后,可以根据所述第M对应关系中所述第M标识对应所述第M+1标识的次数,在该查询结果的基础上快速得到第一查询结果,无需进行join操作对查询结果依次进行遍历,减小了表间关联查询的时间,提高了查询速度,进而提升了查询性能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种表间关联查询方法,其特征在于,所述方法包括:
获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;
根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM;
根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果包括:
根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM;
根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果包括:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
7.根据权利要求1-5任一项所述的方法,其特征在于,在所述根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,还包括:
确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
若所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
8.一种表间关联查询装置,其特征在于,所述装置包括消息获取单元、关系建立单元、结果获取单元;
所述消息获取单元,用于获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,1≤M≤N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
所述关系建立单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1表中的表项序号;
所述结果获取单元,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中每个表内的选择条件,以及所述关系建立单元建立的所述第M对应关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
9.根据权利要求8所述的装置,其特征在于,所述结果获取单元包括查询模块、第一执行模块、第一获取模块;
所述查询模块,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
所述第一执行模块,用于根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
S1、根据所述关系建立单元建立的所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包含与所述第2M-1集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第2M+1集合,更新所述TM;
所述第一获取模块,用于根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果。
10.根据权利要求9所述的装置,其特征在于,所述第一获取模块具体用于:
若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第2(K-i)-1集合中每个第K-i标识对应所述第2K集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第2M-1集合、所述第2M+1集合,获取所述第一查询结果。
11.根据权利要求8所述的装置,其特征在于,所述结果获取单元包括查询模块、第二执行模块、第二获取模块;
所述查询模块,用于根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
所述第二执行模块,用于根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件的表项的第M+1标识;
S4、根据所述第3M+1集合,更新所述TM;
所述第二获取模块,用于根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果。
12.根据权利要求11所述的装置,其特征在于,所述第二获取模块具体用于:
若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一查询结果;
若N>2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中,2≤K≤N-1,为整数:
L1、根据第K结果,所述更新后的TK以及所述更新后的T(K-1),获取第K+1结果,其中,第二结果为初始化值0,所述第K+1结果中包含所述第3(K-i)-2集合中每个第K-i标识对应所述第3K-1集合中的第K+1标识的次数,其中,1≤i≤K-1,为整数;
根据第N结果,所述更新后的T(N-1)以及所述第3M-2集合、所述第3M+1集合,获取所述第一查询结果。
13.根据权利要求8-12任一项所述的装置,其特征在于,所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1标识与所述第M标识对应的主键值的哈希链表。
14.根据权利要求8-12任一项所述的装置,其特征在于,所述装置还包括确定单元、排序单元;
所述确定单元,用于在所述关系建立单元根据所述消息获取单元获取的查询指示消息中携带的第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
所述排序单元,用于若所述确定单元确定所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
所述第M对应关系包括:
所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M标识与所述第M标识对应的第一个第M+1标识的对应关系。
15.一种表间关联查询装置,其特征在于,所述装置包括处理器与存储器,所述存储器与所述处理器通信,所述存储器中存储程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026270.XA CN104794130B (zh) | 2014-01-20 | 2014-01-20 | 一种表间关联查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026270.XA CN104794130B (zh) | 2014-01-20 | 2014-01-20 | 一种表间关联查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794130A true CN104794130A (zh) | 2015-07-22 |
CN104794130B CN104794130B (zh) | 2018-05-18 |
Family
ID=53558924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410026270.XA Active CN104794130B (zh) | 2014-01-20 | 2014-01-20 | 一种表间关联查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794130B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095522A (zh) * | 2015-09-22 | 2015-11-25 | 南开大学 | 基于最近邻搜索的关系表集合外键识别方法 |
CN109388654A (zh) * | 2017-08-04 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种查询数据表的方法和装置 |
CN110196889A (zh) * | 2019-05-30 | 2019-09-03 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110609841A (zh) * | 2019-09-18 | 2019-12-24 | 镁佳(北京)科技有限公司 | 异步处理消息的方法、装置、可读介质及电子设备 |
CN110019212B (zh) * | 2017-11-29 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及数据库服务器 |
CN117131078A (zh) * | 2023-10-20 | 2023-11-28 | 天津南大通用数据技术股份有限公司 | 一种基于跨分布模式的关联查询优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295256A (en) * | 1990-12-14 | 1994-03-15 | Racal-Datacom, Inc. | Automatic storage of persistent objects in a relational schema |
US6662175B1 (en) * | 2001-05-08 | 2003-12-09 | Ncr Corporation | Semantic query optimization using value correlation |
US20050038784A1 (en) * | 2001-02-27 | 2005-02-17 | Oracle International Corporation | Method and mechanism for database partitioning |
CN101164065A (zh) * | 2005-04-14 | 2008-04-16 | 微软公司 | 结构化查询语言中的路径表达式 |
CN102521374A (zh) * | 2011-12-20 | 2012-06-27 | 南京捷梭软件科技有限公司 | 基于关系型联机分析处理的智能数据聚集方法及其系统 |
CN102841892A (zh) * | 2011-06-21 | 2012-12-26 | 中国科学院计算技术研究所 | 一种关系数据的服务封装系统和方法 |
-
2014
- 2014-01-20 CN CN201410026270.XA patent/CN104794130B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295256A (en) * | 1990-12-14 | 1994-03-15 | Racal-Datacom, Inc. | Automatic storage of persistent objects in a relational schema |
US20050038784A1 (en) * | 2001-02-27 | 2005-02-17 | Oracle International Corporation | Method and mechanism for database partitioning |
US6662175B1 (en) * | 2001-05-08 | 2003-12-09 | Ncr Corporation | Semantic query optimization using value correlation |
CN101164065A (zh) * | 2005-04-14 | 2008-04-16 | 微软公司 | 结构化查询语言中的路径表达式 |
CN102841892A (zh) * | 2011-06-21 | 2012-12-26 | 中国科学院计算技术研究所 | 一种关系数据的服务封装系统和方法 |
CN102521374A (zh) * | 2011-12-20 | 2012-06-27 | 南京捷梭软件科技有限公司 | 基于关系型联机分析处理的智能数据聚集方法及其系统 |
Non-Patent Citations (1)
Title |
---|
冯士心 等: ""基于实例化视图的MDX语句执行性能优化"", 《计算机工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095522A (zh) * | 2015-09-22 | 2015-11-25 | 南开大学 | 基于最近邻搜索的关系表集合外键识别方法 |
CN105095522B (zh) * | 2015-09-22 | 2018-09-25 | 南开大学 | 基于最近邻搜索的关系表集合外键识别方法 |
CN109388654A (zh) * | 2017-08-04 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种查询数据表的方法和装置 |
CN110019212B (zh) * | 2017-11-29 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及数据库服务器 |
CN110196889A (zh) * | 2019-05-30 | 2019-09-03 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110609841A (zh) * | 2019-09-18 | 2019-12-24 | 镁佳(北京)科技有限公司 | 异步处理消息的方法、装置、可读介质及电子设备 |
CN117131078A (zh) * | 2023-10-20 | 2023-11-28 | 天津南大通用数据技术股份有限公司 | 一种基于跨分布模式的关联查询优化方法 |
CN117131078B (zh) * | 2023-10-20 | 2024-02-06 | 天津南大通用数据技术股份有限公司 | 一种基于跨分布模式的关联查询优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104794130B (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104794130B (zh) | 一种表间关联查询方法和装置 | |
CN103703467B (zh) | 存储数据的方法和装置 | |
US8103658B2 (en) | Index backbone join | |
CA2887931C (en) | Profiling data with location information | |
CN107729371B (zh) | 区块链的数据索引及查询方法、装置、设备及存储介质 | |
US20150278268A1 (en) | Data encoding and corresponding data structure | |
CN107798017B (zh) | 分布式数据库中的执行计划信息生成方法和系统 | |
US9454561B2 (en) | Method and a consistency checker for finding data inconsistencies in a data repository | |
CN108776678B (zh) | 基于移动端NoSQL数据库的索引创建方法及装置 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN107015987B (zh) | 一种更新和搜索数据库的方法及设备 | |
CN107577787B (zh) | 关联数据信息入库的方法及系统 | |
CN105745642B (zh) | 查询数据的处理方法和装置 | |
CA2461871A1 (en) | An efficient index structure to access hierarchical data in a relational database system | |
CN108874873B (zh) | 数据查询方法、装置、存储介质及处理器 | |
CN106933907B (zh) | 数据表扩展指标的处理方法及装置 | |
CN105447135B (zh) | 数据查找方法和装置 | |
US20100191730A1 (en) | Efficiency in processing queries directed to static data sets | |
US20210216516A1 (en) | Management of a secondary vertex index for a graph | |
CN104463460B (zh) | 用于网络数据投放的排期信息的处理方法及装置 | |
US11531706B2 (en) | Graph search using index vertices | |
CN110555034A (zh) | 一种数据查询分页方法、装置、服务器及介质 | |
CN111797095A (zh) | 索引构建方法和json数据查询方法 | |
CN108376054B (zh) | 一种对标识数据进行索引的处理方法及装置 | |
CN110147396B (zh) | 一种映射关系生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211222 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |