一种表间关联查询方法和装置的制造方法

文档序号:8472964阅读:167来源:国知局
一种表间关联查询方法和装置的制造方法
【专利说明】一种表间关联查询方法和装置 技术领域
[0001] 本发明涉及计算机技术领域,尤其涉及一种表间关联查询方法和装置。 【背景技术】
[0002] 在数据仓库与在线联机分析处理(OLAP)领域,查询的快速响应尤为重要,在OLAP 领域,查询需要处理G级、T级甚至P级的数据量,在如此大数据量的情况下,要求查询的 快速响应,对数据库处理性能提出很大挑战,在大量的查询语句中,都会包含两表间的关联 join操作,并且占据了主要的查询时间,因此提升表间关联查询速度对数据库查询性能尤 为重要。
[0003] 现有技术中,有如下两种表间关联查询的方向:
[0004] 第一,分别在两表中根据选择条件进行查询,最后对选择后的结果进行join操 作;
[0005] 第二,首先根据第一表中的选择条件在第一表中进行查询获得第一结果,接着将 第一结果与第二表进行join操作,然后在join操作结果上根据第二表中的选择条件进行 查询,获得第二结果,最后将第一结果与第二结果进行join操作,更新第一结果。
[0006] 由于上述两种表间查询的方向中均涉及至少一次join操作,而join操作需要对 表进行遍历,因此消耗时间较大,虽然现有技术中针对第二方向提出了一些改进方案,例如 【具体实施方式】部分的示例,但是由于仍存在至少一次join操作,因此消耗时间仍然较大, 降低了表间关联查询的速度,影响了查询性能。
【发明内容】

[0007] 本发明的实施例提供一种表间关联查询方法和装置,能够减小表间关联查询的时 间,提高表间关联查询的速度。
[0008] 为达到上述目的,本发明的实施例采用如下技术方案:
[0009] 第一方面,提供一种表间关联查询方法,所述方法包括:
[0010] 获取查询指示消息,所述查询指示消息携带第一查询条件,指示根据所述第一查 询条件在N个表中获取第一查询结果,其中,所述第一查询条件包括:所述N个表中每个表 内的选择条件、以及所述N个表中第M表的主键值与第M+1表的外键值之间的关联关系, 1彡M彡N-1,为整数,所述第一表至所述第N表为所述N个表中由小至大排序的表;
[0011] 根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键值之间 的关联关系,建立所述第M表与所述第M+1表的第M对应关系,所述第M对应关系中包含第 M标识的信息、与所述第M标识相对应的第M+1标识的信息、所述第M标识对应所述第M+1 标识的次数,其中,所述第M标识为所述第M表中的表项序号,所述第M+1标识为所述第M+1 表中的表项序号;
[0012] 根据所述第一查询条件中所述N个表中每个表内的选择条件,以及所述第M对应 关系中所述第M标识对应所述第M+1标识的次数,获取所述第一查询结果。
[0013] 在第一方面第一种可能的实现方式中,结合第一方面,所述根据所述第一查询条 件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述 第M+1标识的次数,获取所述第一查询结果包括:
[0014] 根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集 合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
[0015] 根据M的取值,循环执行步骤S1-S3,直至M的取值全部执行完毕:
[0016] S1、根据所述第M对应关系和第2M-1集合,确定第2M集合,以及所述第2M-1集合 中的每个第M标识对应所述第2M集合中的第M+1标识的次数TM,其中,所述第2M集合中包 含与所述第2M-1集合中的第M标识相对应的第M+1标识;
[0017] S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表内第2M集 合中的第M+1标识对应的表项,并获取第2M+1集合,其中,所述第2M+1集合中包含满足所 述第M+1表内选择条件的表项的第M+1标识;
[0018] S3、根据所述第2M+1集合,更新所述TM;
[0019] 根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查 询结果。
[0020] 在第一方面第二种可能的实现方式中,结合第一方面第一种可能的实现方式,所 述根据所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,获取所述第一查询结果 包括:
[0021] 若N=2,根据所述第一集合,所述第三集合,以及所述更新后的T1,获取所述第一 查询结果;
[0022] 若N> 2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中, 2彡K彡N-1,为整数:
[0023] Ll、根据第K结果,所述更新后的TK以及所述更新后的T(K-I),获取第K+1结果, 其中,第二结果为初始化值0,所述第K+1结果中包含所述第2 (K-i)-1集合中每个第K-i 标识对应所述第2K集合中的第K+1标识的次数,其中,1彡i彡K-I,为整数;
[0024] 根据第N结果,所述更新后的T(N-I)以及所述第2M-1集合、所述第2M+1集合, 获取所述第一查询结果。
[0025] 在第一方面第三种可能的实现方式中,结合第一方面,所述根据所述第一查询条 件中所述N个表中每个表内的选择条件,以及所述第M对应关系中所述第M标识对应所述 第M+1标识的次数,获取所述第一查询结果包括:
[0026] 根据所述第一查询条件中第一表内的选择条件,查询所述第一表,并获得第一集 合,其中,所述第一集合中包含满足所述第一表内的选择条件的表项的第一标识;
[0027] 根据M的取值,循环执行步骤S1-S4,直至M的取值全部执行完毕:
[0028] S1、根据所述第M对应关系和第3M-2集合,确定第3M-1集合,以及所述第3M-2集 合中的每个第M标识对应所述第3M-1集合中的第M+1标识的次数TM,其中,所述第3M-1集 合中包含与所述第3M-2集合中的第M标识相对应的第M+1标识;
[0029] S2、根据所述第一查询条件中的第M+1表内的选择条件,查询第M+1表,并获取第 3M集合,其中,所述第3M集合中包含满足所述第M+1表内选择条件的表项的第M+1标识;
[0030] S3、根据所述第3M-1集合和所述第3M集合,获取第3M+1集合,其中,所述第3M+1 集合包含满足所述第M+1表内选择条件且对应第M标识的表项满足所述第M表内选择条件 的表项的第M+1标识;
[0031] S4、根据所述第3M+1集合,更新所述TM;
[0032] 根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询 结果。
[0033] 在第一方面第四种可能的实现方式中,结合第一方面第三种可能的实现方式,所 述根据所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,获取所述第一查询结果包 括:
[0034] 若N=2,根据所述第一集合,所述第四集合,以及所述更新后的T1,获取所述第一 查询结果;
[0035] 若N> 2,根据K的取值,循环执行步骤L1,直至K的取值全部执行完毕,其中, 2彡K彡N-1,为整数:
[0036]Ll、根据第K结果,所述更新后的TK以及所述更新后的T(K-I),获取第K+1结果, 其中,第二结果为初始化值0,所述第K+1结果中包含所述第3 (K-i)-2集合中每个第K-i 标识对应所述第3K-1集合中的第K+1标识的次数,其中,1彡i彡K-I,为整数;
[0037] 根据第N结果,所述更新后的T(N-I)以及所述第3M-2集合、所述第3M+1集合, 获取所述第一查询结果。
[0038] 在第一方面第五种可能的实现方式中,结合第一方面至第一方面第四种可能的实 现方式,所述第M对应关系包括:
[0039] 所述第M标识与所述第M标识对应所述第M+1标识的次数的对应关系、所述第M+1 标识与所述第M标识对应的主键值的哈希链表。
[0040] 在第一方面第六种可能的实现方式中,结合第一方面至第一方面第四种可能的实 现方式,在所述根据所述第一查询条件中所述N个表中第M表的主键值与第M+1表的外键 值之间的关联关系,建立所述第M表与所述第M+1表的第M对应关系之前,还包括:
[0041] 确定所述第M+1表中外键值相同的表项的第M+1标识是否连续;
[0042] 若所述第M+1表中外键值相同的表项的第M+1标识不连续,对所述第M+1表中的 表项进行排序,以使得所述第M+1表中外键值相同的表项的第M+1标识连续;
[0043] 所述第M对应关系包括:
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1