数据库查询方法和装置.pdf

上传人:b*** 文档编号:4694246 上传时间:2018-10-27 格式:PDF 页数:15 大小:1.23MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410779290.4

申请日:

2014.12.15

公开号:

CN104392001A

公开日:

2015.03.04

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20141215|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

北京国双科技有限公司

发明人:

廖小利

地址:

100086北京市海淀区双榆树小区知春路76号翠宫饭店8层A间

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司11240

代理人:

吴贵明; 张永明

PDF下载: PDF下载
内容摘要

本发明公开了一种数据库查询方法和装置。其中,该数据库查询方法包括:获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;将第一维度表和第二维度表与指标表做内联接处理,得到第一数据;获取第一维度表的第一主键列和第二维度表的第二主键列;组合第一主键列的第一主键和第二主键列的第二主键,得到第三主键列;将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据;合并第一数据和第二数据,得到目标数据。通过本发明,解决了现有技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。

权利要求书

权利要求书
1.  一种数据库查询方法,其特征在于,包括:
获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;
将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据;
获取所述第一维度表的第一主键列和所述第二维度表的第二主键列;
组合所述第一主键列的第一主键和所述第二主键列的第二主键,得到第三主键列;
将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据;
合并所述第一数据和所述第二数据,得到所述目标数据。

2.  根据权利要求1所述的数据库查询方法,其特征在于,将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据包括:
将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第三数据;
将所述第三数据做维度分组和指标聚合计算,得到所述第一数据。

3.  根据权利要求1所述的数据库查询方法,其特征在于,将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据包括:
判断所述第三主键列中的第三主键是否存在于所述第一数据;
若所述第三主键列中的所述第三主键存在于所述第一数据,则舍弃所述第三主键,得到更新后的所述第三主键列;
使用更新后的所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第四数据;
补充所述第四数据中的指标列,得到所述第二数据。

4.  根据权利要求3所述的数据库查询方法,其特征在于,补充所述第四数据中的指标列,得到所述第二数据包括:
对所述第四数据进行维度分组得到第五数据;
补充所述第五数据中的所述指标列,并使用零或空设置所述指标列的值,得 到所述第二数据。

5.  根据权利要求1至4中任意一项所述的数据库查询方法,其特征在于,获取所述第一维度表的第一主键列和所述第二维度表的第二主键列包括:
查询所述第一维度表中的所述第一主键列,保存所述第一主键列至第一数据表;
查询所述第二维度表中的所述第二主键列,保存所述第二主键列至第二数据表;
从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键列。

6.  一种数据库查询装置,其特征在于,包括:
第一获取模块,用于获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;
第一内联接模块,用于将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据;
第二获取模块,用于获取所述第一维度表的第一主键列和所述第二维度表的第二主键列;
组合模块,用于组合所述第一主键列中的第一主键和所述第二主键列中的第二主键,得到第三主键列;
第二内联接模块,用于将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据;
合并模块,用于合并所述第一数据和所述第二数据,得到所述目标数据。

7.  根据权利要求6所述的数据库查询装置,其特征在于,所述第一内联接模块包括:
第一内联接子模块,用于将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第三数据;
计算模块,用于将所述第三数据做维度分组和指标聚合计算,得到所述第一数据。

8.  根据权利要求6所述的数据库查询装置,其特征在于,所述第二内联接模块包括:
判断模块,用于判断所述第三主键列中的第三主键是否存在于所述第一数据;
舍弃模块,用于在所述第三主键列中的所述第三主键存在于所述第一数据的情况下,舍弃所述第三主键,得到更新后的所述第三主键列;
第二内联接子模块,用于使用更新后的所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第四数据;
补充模块,用于补充所述第四数据中的指标列,得到所述第二数据。

9.  根据权利要求8所述的数据库查询装置,其特征在于,所述补充模块包括:
分组模块,用于对所述第四数据进行维度分组得到第五数据;
补充子模块,用于补充所述第五数据中的所述指标列,并使用零或空设置所述指标列的值,得到所述第二数据。

10.  根据权利要求6至9中任意一项所述的数据库查询装置,其特征在于,所述第二获取模块包括:
第一查询模块,用于查询所述第一维度表中的所述第一主键列,保存所述第一主键列至第一数据表;
第二查询模块,用于查询所述第二维度表中的所述第二主键列,保存所述第二主键列至第二数据表;
从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键列。

说明书

说明书数据库查询方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据库查询方法和装置。
背景技术
在SQL数据库中进行查询时,若x、y表示两个维度表,z表示指标表,其中,指标表z中分别外键关联x的主键和y的主键,那么在查询数据时需要以x、y和z为基础查询出x中的每一行在y的每一行上基于z的指标表现。现有技术中,需要先将x与y交叉联接,然后再与z左联接,基于x、y和z联接后的结果进行维度分组和指标聚合计算得出最后的目标查询结果。
其中,SQL为Structured Query Language,即结构化查询语言,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;维度表即应用系统中的实体表,如广告投放系统中广告、项目、广告主等都是维度表;指标表是应用系统用以存储检测或计算出的指标的表,指标表一般会外键关联一个或多个维度表,以表示维度上的指标表现,如广告投放系统中广告性能表,该指标表包含点击、曝光、独立点击等指标列,且外键关联维度表广告和时间;交叉联接不带WHERE子句,它返回被联接的两个表所有数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数;左联接又名左外联接,是查询结果集既包括联接表的匹配行,也包括左联接表的所有行。
现有技术主要有以下两个缺点:
1、交叉联接性能低下,且无法应用维度表的聚集索引。
2、未关联任何指标的维度行也都参与了指标的分组聚合计算。
其中,聚集索引是一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
针对现有技术中在数据库中查询数据的效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种数据库查询方法和装置,以解决现有技术中在数 据库中查询数据的效率低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据库查询方法。
根据本发明的数据库查询方法包括:获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;将第一维度表和第二维度表与指标表做内联接处理,得到第一数据;获取第一维度表的第一主键列和第二维度表的第二主键列;组合第一主键列的第一主键和第二主键列的第二主键,得到第三主键列;将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据;合并第一数据和第二数据,得到目标数据。
进一步地,将第一维度表和第二维度表与指标表做内联接处理,得到第一数据包括:将第一维度表和第二维度表与指标表做内联接处理,得到第三数据;将第三数据做维度分组和指标聚合计算,得到第一数据。
进一步地,将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据包括:判断第三主键列中的第三主键是否存在于第一数据;若第三主键列中的第三主键存在于第一数据,则舍弃第三主键,得到更新后的第三主键列;使用更新后的第三主键列与第一维度表和第二维度表做内联接处理,得到第四数据;补充第四数据中的指标列,得到第二数据。
进一步地,补充第四数据中的指标列,得到第二数据包括:对第四数据进行维度分组得到第五数据;补充第五数据中的指标列,并使用零或空设置指标列的值,得到第二数据。
进一步地,获取第一维度表的第一主键列和第二维度表的第二主键列包括:查询第一维度表中的第一主键列,保存第一主键列至第一数据表;查询第二维度表中的第二主键列,保存第二主键列至第二数据表;从第一数据表中读取第一主键列和从第二数据表中读取第二主键列。
为了实现上述目的,根据本发明的另一方面,提供了一种数据库查询装置。
根据本发明的数据库查询装置包括:第一获取模块,用于获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;第一内联接模块,用于将第一维度表和第二维度表与指标表做内联接处理,得到第一数据;第二获取模块,用于获取第一维度表的第一主键列和第二维度表的第二主键列;组合模块,用于组合第一主键列中的第一主键和第二主键列中的第二主键,得到第三主键列;第二内联接模块,用于将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据;合并模块,用于合并第一数据和第二数据,得到目标数据。
进一步地,第一内联接模块包括:第一内联接子模块,用于将第一维度表和第二维度表与指标表做内联接处理,得到第三数据;计算模块,用于将第三数据做维度分组和指标聚合计算,得到第一数据。
进一步地,第二内联接模块包括:判断模块,用于判断第三主键列中的第三主键是否存在于第一数据;舍弃模块,用于在第三主键列中的第三主键存在于第一数据的情况下,舍弃第三主键,得到更新后的第三主键列;第二内联接子模块,用于使用更新后的第三主键列与第一维度表和第二维度表做内联接处理,得到第四数据;补充模块,用于补充第四数据中的指标列,得到第二数据。
进一步地,补充模块包括:分组模块,用于对第四数据进行维度分组得到第五数据;补充子模块,用于补充第五数据中的指标列,并使用零或空设置指标列的值,得到第二数据。
进一步地,第二获取模块包括:第一查询模块,用于查询第一维度表中的第一主键列,保存第一主键列至第一数据表;第二查询模块,用于查询第二维度表中的第二主键列,保存第二主键列至第二数据表;从第一数据表中读取第一主键列和从第二数据表中读取第二主键列。
采用本发明实施例,在从数据库中获取待查询的目标数据对应的第一维度表、第二维度表以及指标表之后,将第一维度表和第二维度表与指标表做内联接处理得到第一数据;然后获取第一维度表的第一主键列和第二维度表的第二主键列,组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列,并将第三主键列与第一维度表和第二维度表做内联接处理得到第二数据;合并第一数据和第二数据,即可得到目标数据。在本发明上述实施例中,将目标数据拆分为两个部分分别进行查询,通过第一维度表和第二维度表与指标表的内联接计算得到有意义的数据(即上述实施例中的第一数据),并遍历维度表补充内联接中删除的数据得到无意义的数据(即上述实施例中的第二数据),合并第一数据和第二数据得到目标数据,无需对两个维度表和指标表进行交叉联接,避免了现有技术中对维度表中无意义的维度行参与指标表的分组聚合计算,提高了获取目标数据的效率,并且使用内联接可以应用聚集索引,通过使用聚集索引可以进一步提高获取目标数据的效率。通过本发明实施例,解决了现有技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据库查询方法的流程图;
图2是根据本发明实施例的一种可选的数据库查询方法的流程图;以及
图3是根据本发明实施例的数据库查询装置的示意图。
具体实施方式
首先,在对本发明实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
SQL为Structured Query Language,即结构化查询语言,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
维度表即应用系统中的实体表,如广告投放系统中广告、项目、广告主等都是维度表。
指标表是应用系统用以存储检测或计算出的指标的表,指标表一般会外键关联一个或多个维度表,以表示维度上的指标表现,如广告投放系统中广告性能表,该指标表包含点击、曝光、独立点击等指标列,且外键关联维度表广告和时间。
交叉联接不带WHERE子句,它返回被联接的两个表所有数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
左联接又名左外联接,是查询结果集既包括联接表的匹配行,也包括左联接表的所有行。
聚集索引是一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序,由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引,但该索引可以包含多个列(组合索引)。
内联接也叫联接,是最早的一种联接,还可以被称为普通联接或者自然联接,内联接是从结果表中删除与其他被联接表中没有匹配行的所有行。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第 二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是根据本发明实施例的数据库查询方法的流程图,如图1所示,该数据库查询方法可以包括如下的步骤S102至步骤S112:
步骤S102,获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表。
步骤S104,将第一维度表和第二维度表与指标表做内联接处理,得到第一数据。
步骤S106,获取第一维度表的第一主键列和第二维度表的第二主键列。
步骤S108,组合第一主键列中的第一主键和第二主键列中的第二主键,得到第三主键列。
步骤S110,将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据。
步骤S112,合并第一数据和第二数据,得到目标数据。
采用本发明实施例,在从数据库中获取待查询的目标数据对应的第一维度表、第二维度表以及指标表之后,将第一维度表和第二维度表与指标表做内联接处理得到第一数据;然后获取第一维度表的第一主键列和第二维度表的第二主键列,组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列,并将第三主键列与第一维度表和第二维度表做内联接处理得到第二数据;合并第一数据和第二数据,即可得到目标数据。在本发明上述实施例中,将目标数据拆分为两个部分分别进行查询,通过第一维度表和第二维度表与指标表的内联接计算得到有意义的数据(即上述实施例中的第一数据),并遍历维度表补充内联接中删除的数据得到无意义的数据(即上述实施例中的第二数据),合并第一数据和第二数据得到目标数据,无需对两个维度表和指标表进行交叉联接,避免了现有技术中对维度表中无意义的维度行参与指标表的分组聚合计算,提高了获取目标数据的效率,并且使用内联接可以应用聚集索引,通过使用聚集索引可以进一步提高获取目标数据的效率。通过本发明实施例,解决了现有 技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。
根据本发明上述实施例,将第一维度表和第二维度表与指标表做内联接处理,得到第一数据可以包括:将第一维度表和第二维度表与指标表做内联接处理,得到第三数据;将第三数据做维度分组和指标聚合计算,得到第一数据。
具体地,将第一维度表和第二维度表与指标表进行内联接得到第三数据,然后对得到的第三数据进行维度分组和指标聚合计算,得到第一数据。
通过本发明实施例,通过对维度表和指标表进行内联接处理,无需对维度表和指标表进行交叉联接处理,避免了维度表中无意义的维度行与指标表中的各个指标行进行分组聚合计算,提高了获得第一数据的效率,进而提高了查询目标数据的效率。
根据本发明上述实施例,将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据可以包括:判断第三主键列中的第三主键是否存在于第一数据;若第三主键列中的第三主键存在于第一数据,则舍弃第三主键,得到更新后的第三主键列;使用更新后的第三主键列与第一维度表和第二维度表做内联接处理,得到第四数据;补充第四数据中的指标列,得到第二数据。
具体地,在将第三主键列与第一维度表和第二维度表进行内联接时,首先判断第三主键列中的第三主键是否存在于第一数据,并在第三主键列中的第三主键存在于第一数据时,舍弃第三主键,得到更新后的第三主键列,并使用更新后的第三主键列与第一维度表和第二维度表进行内联接得到第四数据,然后补充第四数据中的指标列,得到第二数据。
通过本发明上述实施例,将第三主键列中与第一数据中的主键重复的主键删除,并使用更新后的第三主键列与两个维度表进行内联接,无需对第一数据中已存在的数据进行再次处理,可以进一步地提高查询目标数据的效率。
进一步地,补充第四数据中的指标列,得到第二数据可以包括:对第四数据进行维度分组得到第五数据;补充第五数据中的指标列,并使用零或空设置指标列的值,得到第二数据。
具体地,在对第四数据进行维度分组得到第五数据之后,将第五数据中的指标列补充为默认空值(如0或空),将补充后的第五数据作为第二数据。
通过本发明上述实施例,将内联接处理删除无意义的指标列的值重新补充为默认空值,保证了目标数据中的各个维度值和指标值的完整性,避免了由于数据丢失而导致的目标数据不准确,提高了查询目标数据的准确度。
在本发明的上述实施例中,获取第一维度表的第一主键列和第二维度表的第二主 键列可以包括:查询第一维度表中的第一主键列,保存第一主键列至第一数据表;查询第二维度表中的第二主键列,保存第二主键列至第二数据表;从第一数据表中读取第一主键列和从第二数据表中读取第二主键列。
具体地,在获取第一维度表的第一主键列和第二维度表的第二主键列时,将查询到的第一维度表中的第一主键列保存至第一数据表,将查询到的第二维度表中的第二主键列保存至第二数据表,然后读取第一数据表中的第一主键列和第二数据表中的第二主键列。
进一步地,可以通过遍历第一数据表中的第一主键列,并在遍历第一主键列中的每一行时,遍历第二数据表中的第二主键列的各个行,得到组合行,将得到的组合行作为第三主键列。通过本发明上述实施例,实现了组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列。
图2是根据本发明实施例的一种可选的数据库查询方法的流程图,如图2所示,该数据库查询方法可以包括如下步骤:
步骤S202,将维度表x、维度表y与指标表z做内联接,得到第三数据。
其中,维度表x即本发明上述实施例中的第一维度表,维度表y即本发明上述实施例中的第二维度表,维度表z即本发明上述实施例中的指标表。
步骤S204,对第三数据做维度分组和指标聚合计算,得到有意义的数据R1。
其中,数据R1即本发明上述实施例中的第一数据。
步骤S206,查询出数据表x的主键列并存入临时表x1(x_id)。
步骤S208,查询出数据表y的主键列并存入临时表y1(y_id)。
步骤S210,先遍历临时表x1(x_id)的所有行,在遍历临时表x1(x_id)的每一行时,遍历临时表y1(y_id)中的所有行,得到[x_id,y_id]的组合行。
其中,组合行即本发明上述实施例中的第三主键列。
步骤S212,依次判断[x_id,y_id]中的各行是否在数据R1中。
其中,如果[x_id,y_id]中的一行在数据R1中,执行步骤S214;如果[x_id,y_id]中的一行不在数据R1中,执行步骤S216。
步骤S214,舍弃该行。
步骤S216,将该行存入临时表[x_y_id]。
其中,临时表[x_y_id]即本发明上述实施例中的更新后的第三主键列。
步骤S218,将临时表[x_y_id]与维度表x和维度表y做内联接,得到第四数据。
步骤S220,对第四数据做维度分组,并补充指标列为默认空值(如,0或空),得到无意义的数据R2。
其中,数据R2即本发明上述实施例中的第二数据。
步骤S222,将数据R1和数据R2合并后得到目标数据。
通过本发明上述实施例,通过将目标数据拆分为有意义和无意义的两部分数据分别进行查询计算,以内联接计算出有意义的数据部分,以遍历维度表并补充指标列为默认空值的方法计算出无意义的数据部分,将有意义和无意义的两部分数据合并在一起得到目标数据,可以避免在维度表之间进行交叉联接以及维度表中无意义的维度行参与指标列的分组聚合计算,使用内联接可以更好地使用聚集索引,提高了查询目标数据的效率。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本发明实施例的数据库查询装置的示意图,如图3所示,该数据库查询装置可以包括:第一获取模块10,用于获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;第一内联接模块30,用于将第一维度表和第二维度表与指标表做内联接处理,得到第一数据;第二获取模块50,用于获取第一维度表的第一主键列和第二维度表的第二主键列;组合模块70,用于组合第一主键列中的第一主键和第二主键列中的第二主键,得到第三主键列;第二内联接模块90,用于将第三主键列与第一维度表和第二维度表做内联接处理,得到第二数据;合并模块110,用于合并第一数据和第二数据,得到目标数据。
采用本发明实施例,在从数据库中获取待查询的目标数据对应的第一维度表、第二维度表以及指标表之后,将第一维度表和第二维度表与指标表做内联接处理得到第一数据;然后获取第一维度表的第一主键列和第二维度表的第二主键列,组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列,并将第三主键列与第一维度表和第二维度表做内联接处理得到第二数据;合并第一数据和第二数据,即可得到目标数据。在本发明上述实施例中,将目标数据拆分为两个部分分别进行查询,通过第一维度表和第二维度表与指标表的内联接计算得到有意义的数据(即上述实施例中的第一数据),并遍历维度表补充内联接中删除的数据得到无意义的数据(即上述实施例中的第二数据),合并第一数据和第二数据得到目标数据,无需对两个维度表和 指标表进行交叉联接,避免了现有技术中对维度表中无意义的维度行参与指标表的分组聚合计算,提高了获取目标数据的效率,并且使用内联接可以应用聚集索引,通过使用聚集索引可以进一步提高获取目标数据的效率。通过本发明实施例,解决了现有技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。
根据本发明上述实施例,第一内联接模块可以包括:第一内联接子模块,用于将第一维度表和第二维度表与指标表做内联接处理,得到第三数据;计算模块,用于将第三数据做维度分组和指标聚合计算,得到第一数据。
具体地,将第一维度表和第二维度表与指标表进行内联接得到第三数据,然后对得到的第三数据进行维度分组和指标聚合计算,得到第一数据。
通过本发明实施例,通过对维度表和指标表进行内联接处理,无需对维度表和指标表进行交叉联接处理,避免了维度表中无意义的维度行与指标表中的各个指标行进行分组聚合计算,提高了获得第一数据的效率,进而提高了查询目标数据的效率。
根据本发明上述实施例,第二内联接模块可以包括:判断模块,用于判断第三主键列中的第三主键是否存在于第一数据;舍弃模块,用于在第三主键列中的第三主键存在于第一数据的情况下,舍弃第三主键,得到更新后的第三主键列;第二内联接子模块,用于使用更新后的第三主键列与第一维度表和第二维度表做内联接处理,得到第四数据;补充模块,用于补充第四数据中的指标列,得到第二数据。
具体地,在将第三主键列与第一维度表和第二维度表进行内联接时,首先判断第三主键列中的第三主键是否存在于第一数据,并在第三主键列中的第三主键存在于第一数据时,舍弃第三主键,得到更新后的第三主键列,并使用更新后的第三主键列与第一维度表和第二维度表进行内联接得到第四数据,然后补充第四数据中的指标列,得到第二数据。
通过本发明上述实施例,将第三主键列中与第一数据中的主键重复的主键删除,并使用更新后的第三主键列与两个维度表进行内联接,无需对第一数据中已存在的数据进行再次处理,可以进一步地提高查询目标数据的效率。
进一步地,补充模块可以包括:分组模块,用于对第四数据进行维度分组得到第五数据;补充子模块,用于补充第五数据中的指标列,并使用零或空设置指标列的值,得到第二数据。
具体地,在对第四数据进行维度分组得到第五数据之后,将第五数据中的指标列补充为默认空值(如0或空),将补充后的第五数据作为第二数据。
通过本发明上述实施例,将内联接处理删除无意义的指标列的值重新补充为默认 空值,保证了目标数据中的各个维度值和指标值的完整性,避免了由于数据丢失而导致的目标数据不准确,提高了查询目标数据的准确度。
在本发明的上述实施例中,第二获取模块可以包括:第一查询模块,用于查询第一维度表中的第一主键列,保存第一主键列至第一数据表;第二查询模块,用于查询第二维度表中的第二主键列,保存第二主键列至第二数据表;从第一数据表中读取第一主键列和从第二数据表中读取第二主键列。
具体地,在获取第一维度表的第一主键列和第二维度表的第二主键列时,将查询到的第一维度表中的第一主键列保存至第一数据表,将查询到的第二维度表中的第二主键列保存至第二数据表,然后读取第一数据表中的第一主键列和第二数据表中的第二主键列。
进一步地,可以通过遍历第一数据表中的第一主键列,并在遍历第一主键列中的每一行时,遍历第二数据表中的第二主键列的各个行,得到组合行,将得到的组合行作为第三主键列。通过本发明上述实施例,实现了组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
从以上的描述中,可以看出,本发明实现了如下技术效果:
采用本发明实施例,在从数据库中获取待查询的目标数据对应的第一维度表、第二维度表以及指标表之后,将第一维度表和第二维度表与指标表做内联接处理得到第一数据;然后获取第一维度表的第一主键列和第二维度表的第二主键列,组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列,并将第三主键列与第一维度表和第二维度表做内联接处理得到第二数据;合并第一数据和第二数据,即可得到目标数据。在本发明上述实施例中,将目标数据拆分为两个部分分别进行查询,通过第一维度表和第二维度表与指标表的内联接计算得到有意义的数据(即上述实施例中的第一数据),并遍历维度表补充内联接中删除的数据得到无意义的数据(即上述实施例中的第二数据),合并第一数据和第二数据得到目标数据,无需对两个维度表和指标表进行交叉联接,避免了现有技术中对维度表中无意义的维度行参与指标表的分组聚合计算,提高了获取目标数据的效率,并且使用内联接可以应用聚集索引,通过使用聚集索引可以进一步提高获取目标数据的效率。通过本发明实施例,解决了现有技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

数据库查询方法和装置.pdf_第1页
第1页 / 共15页
数据库查询方法和装置.pdf_第2页
第2页 / 共15页
数据库查询方法和装置.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《数据库查询方法和装置.pdf》由会员分享,可在线阅读,更多相关《数据库查询方法和装置.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410779290.4 (22)申请日 2014.12.15 G06F 17/30(2006.01) (71)申请人 北京国双科技有限公司 地址 100086 北京市海淀区双榆树小区知春 路 76 号翠宫饭店 8 层 A 间 (72)发明人 廖小利 (74)专利代理机构 北京康信知识产权代理有限 责任公司 11240 代理人 吴贵明 张永明 (54) 发明名称 数据库查询方法和装置 (57) 摘要 本发明公开了一种数据库查询方法和装置。 其中, 该数据库查询方法包括 : 获取待查询的目 标数据对应数据库中的第一维度表、 第二维度表 。

2、以及指标表 ; 将第一维度表和第二维度表与指标 表做内联接处理, 得到第一数据 ; 获取第一维度 表的第一主键列和第二维度表的第二主键列 ; 组 合第一主键列的第一主键和第二主键列的第二主 键, 得到第三主键列 ; 将第三主键列与第一维度 表和第二维度表做内联接处理, 得到第二数据 ; 合并第一数据和第二数据, 得到目标数据。 通过本 发明, 解决了现有技术中在数据库中查询数据的 效率低的问题, 实现了提高查询目标数据的效率 的效果。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书9页 附图3页 (10)申请公布号 CN 104392。

3、001 A (43)申请公布日 2015.03.04 CN 104392001 A 1/2 页 2 1. 一种数据库查询方法, 其特征在于, 包括 : 获取待查询的目标数据对应数据库中的第一维度表、 第二维度表以及指标表 ; 将所述第一维度表和所述第二维度表与所述指标表做内联接处理, 得到第一数据 ; 获取所述第一维度表的第一主键列和所述第二维度表的第二主键列 ; 组合所述第一主键列的第一主键和所述第二主键列的第二主键, 得到第三主键列 ; 将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理, 得到第二数 据 ; 合并所述第一数据和所述第二数据, 得到所述目标数据。 2. 根据权利要。

4、求 1 所述的数据库查询方法, 其特征在于, 将所述第一维度表和所述第 二维度表与所述指标表做内联接处理, 得到第一数据包括 : 将所述第一维度表和所述第二维度表与所述指标表做内联接处理, 得到第三数据 ; 将所述第三数据做维度分组和指标聚合计算, 得到所述第一数据。 3. 根据权利要求 1 所述的数据库查询方法, 其特征在于, 将所述第三主键列与所述第 一维度表和所述第二维度表做内联接处理, 得到第二数据包括 : 判断所述第三主键列中的第三主键是否存在于所述第一数据 ; 若所述第三主键列中的所述第三主键存在于所述第一数据, 则舍弃所述第三主键, 得 到更新后的所述第三主键列 ; 使用更新后的。

5、所述第三主键列与所述第一维度表和所述第二维度表做内联接处理, 得 到第四数据 ; 补充所述第四数据中的指标列, 得到所述第二数据。 4. 根据权利要求 3 所述的数据库查询方法, 其特征在于, 补充所述第四数据中的指标 列, 得到所述第二数据包括 : 对所述第四数据进行维度分组得到第五数据 ; 补充所述第五数据中的所述指标列, 并使用零或空设置所述指标列的值, 得到所述第 二数据。 5.根据权利要求1至4中任意一项所述的数据库查询方法, 其特征在于, 获取所述第一 维度表的第一主键列和所述第二维度表的第二主键列包括 : 查询所述第一维度表中的所述第一主键列, 保存所述第一主键列至第一数据表 ;。

6、 查询所述第二维度表中的所述第二主键列, 保存所述第二主键列至第二数据表 ; 从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键 列。 6. 一种数据库查询装置, 其特征在于, 包括 : 第一获取模块, 用于获取待查询的目标数据对应数据库中的第一维度表、 第二维度表 以及指标表 ; 第一内联接模块, 用于将所述第一维度表和所述第二维度表与所述指标表做内联接处 理, 得到第一数据 ; 第二获取模块, 用于获取所述第一维度表的第一主键列和所述第二维度表的第二主键 列 ; 组合模块, 用于组合所述第一主键列中的第一主键和所述第二主键列中的第二主键, 权 利 要 求 书 CN 1。

7、04392001 A 2 2/2 页 3 得到第三主键列 ; 第二内联接模块, 用于将所述第三主键列与所述第一维度表和所述第二维度表做内联 接处理, 得到第二数据 ; 合并模块, 用于合并所述第一数据和所述第二数据, 得到所述目标数据。 7. 根据权利要求 6 所述的数据库查询装置, 其特征在于, 所述第一内联接模块包括 : 第一内联接子模块, 用于将所述第一维度表和所述第二维度表与所述指标表做内联接 处理, 得到第三数据 ; 计算模块, 用于将所述第三数据做维度分组和指标聚合计算, 得到所述第一数据。 8. 根据权利要求 6 所述的数据库查询装置, 其特征在于, 所述第二内联接模块包括 : 。

8、判断模块, 用于判断所述第三主键列中的第三主键是否存在于所述第一数据 ; 舍弃模块, 用于在所述第三主键列中的所述第三主键存在于所述第一数据的情况下, 舍弃所述第三主键, 得到更新后的所述第三主键列 ; 第二内联接子模块, 用于使用更新后的所述第三主键列与所述第一维度表和所述第二 维度表做内联接处理, 得到第四数据 ; 补充模块, 用于补充所述第四数据中的指标列, 得到所述第二数据。 9. 根据权利要求 8 所述的数据库查询装置, 其特征在于, 所述补充模块包括 : 分组模块, 用于对所述第四数据进行维度分组得到第五数据 ; 补充子模块, 用于补充所述第五数据中的所述指标列, 并使用零或空设置。

9、所述指标列 的值, 得到所述第二数据。 10. 根据权利要求 6 至 9 中任意一项所述的数据库查询装置, 其特征在于, 所述第二获 取模块包括 : 第一查询模块, 用于查询所述第一维度表中的所述第一主键列, 保存所述第一主键列 至第一数据表 ; 第二查询模块, 用于查询所述第二维度表中的所述第二主键列, 保存所述第二主键列 至第二数据表 ; 从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键 列。 权 利 要 求 书 CN 104392001 A 3 1/9 页 4 数据库查询方法和装置 技术领域 0001 本发明涉及数据处理领域, 具体而言, 涉及一种数据库查询方法和。

10、装置。 背景技术 0002 在 SQL 数据库中进行查询时, 若 x、 y 表示两个维度表, z 表示指标表, 其中, 指标表 z 中分别外键关联 x 的主键和 y 的主键, 那么在查询数据时需要以 x、 y 和 z 为基础查询出 x 中的每一行在 y 的每一行上基于 z 的指标表现。现有技术中, 需要先将 x 与 y 交叉联接, 然后再与 z 左联接, 基于 x、 y 和 z 联接后的结果进行维度分组和指标聚合计算得出最后的 目标查询结果。 0003 其中, SQL 为 Structured Query Language, 即结构化查询语言, SQL 是一种数据库 查询和程序设计语言, 用于。

11、存取数据以及查询、 更新和管理关系数据库系统 ; 维度表即应用 系统中的实体表, 如广告投放系统中广告、 项目、 广告主等都是维度表 ; 指标表是应用系统 用以存储检测或计算出的指标的表, 指标表一般会外键关联一个或多个维度表, 以表示维 度上的指标表现, 如广告投放系统中广告性能表, 该指标表包含点击、 曝光、 独立点击等指 标列, 且外键关联维度表广告和时间 ; 交叉联接不带 WHERE 子句, 它返回被联接的两个表所 有数据行的笛卡尔积, 返回结果集合中的数据行数等于第一个表中符合查询条件的数据行 数乘以第二个表中符合查询条件的数据行数 ; 左联接又名左外联接, 是查询结果集既包括 联接。

12、表的匹配行, 也包括左联接表的所有行。 0004 现有技术主要有以下两个缺点 : 0005 1、 交叉联接性能低下, 且无法应用维度表的聚集索引。 0006 2、 未关联任何指标的维度行也都参与了指标的分组聚合计算。 0007 其中, 聚集索引是一种索引, 该索引中键值的逻辑顺序决定了表中相应行的物理 顺序。 0008 针对现有技术中在数据库中查询数据的效率低的问题, 目前尚未提出有效的解决 方案。 发明内容 0009 本发明的主要目的在于提供一种数据库查询方法和装置, 以解决现有技术中在数 据库中查询数据的效率低的问题。 0010 为了实现上述目的, 根据本发明的一个方面, 提供了一种数据库。

13、查询方法。 0011 根据本发明的数据库查询方法包括 : 获取待查询的目标数据对应数据库中的第一 维度表、 第二维度表以及指标表 ; 将第一维度表和第二维度表与指标表做内联接处理, 得到 第一数据 ; 获取第一维度表的第一主键列和第二维度表的第二主键列 ; 组合第一主键列的 第一主键和第二主键列的第二主键, 得到第三主键列 ; 将第三主键列与第一维度表和第二 维度表做内联接处理, 得到第二数据 ; 合并第一数据和第二数据, 得到目标数据。 0012 进一步地, 将第一维度表和第二维度表与指标表做内联接处理, 得到第一数据包 说 明 书 CN 104392001 A 4 2/9 页 5 括 : 。

14、将第一维度表和第二维度表与指标表做内联接处理, 得到第三数据 ; 将第三数据做维 度分组和指标聚合计算, 得到第一数据。 0013 进一步地, 将第三主键列与第一维度表和第二维度表做内联接处理, 得到第二数 据包括 : 判断第三主键列中的第三主键是否存在于第一数据 ; 若第三主键列中的第三主键 存在于第一数据, 则舍弃第三主键, 得到更新后的第三主键列 ; 使用更新后的第三主键列与 第一维度表和第二维度表做内联接处理, 得到第四数据 ; 补充第四数据中的指标列, 得到第 二数据。 0014 进一步地, 补充第四数据中的指标列, 得到第二数据包括 : 对第四数据进行维度分 组得到第五数据 ; 补。

15、充第五数据中的指标列, 并使用零或空设置指标列的值, 得到第二数 据。 0015 进一步地, 获取第一维度表的第一主键列和第二维度表的第二主键列包括 : 查询 第一维度表中的第一主键列, 保存第一主键列至第一数据表 ; 查询第二维度表中的第二主 键列, 保存第二主键列至第二数据表 ; 从第一数据表中读取第一主键列和从第二数据表中 读取第二主键列。 0016 为了实现上述目的, 根据本发明的另一方面, 提供了一种数据库查询装置。 0017 根据本发明的数据库查询装置包括 : 第一获取模块, 用于获取待查询的目标数据 对应数据库中的第一维度表、 第二维度表以及指标表 ; 第一内联接模块, 用于将第。

16、一维度表 和第二维度表与指标表做内联接处理, 得到第一数据 ; 第二获取模块, 用于获取第一维度表 的第一主键列和第二维度表的第二主键列 ; 组合模块, 用于组合第一主键列中的第一主键 和第二主键列中的第二主键, 得到第三主键列 ; 第二内联接模块, 用于将第三主键列与第一 维度表和第二维度表做内联接处理, 得到第二数据 ; 合并模块, 用于合并第一数据和第二数 据, 得到目标数据。 0018 进一步地, 第一内联接模块包括 : 第一内联接子模块, 用于将第一维度表和第二维 度表与指标表做内联接处理, 得到第三数据 ; 计算模块, 用于将第三数据做维度分组和指标 聚合计算, 得到第一数据。 0。

17、019 进一步地, 第二内联接模块包括 : 判断模块, 用于判断第三主键列中的第三主键是 否存在于第一数据 ; 舍弃模块, 用于在第三主键列中的第三主键存在于第一数据的情况下, 舍弃第三主键, 得到更新后的第三主键列 ; 第二内联接子模块, 用于使用更新后的第三主键 列与第一维度表和第二维度表做内联接处理, 得到第四数据 ; 补充模块, 用于补充第四数据 中的指标列, 得到第二数据。 0020 进一步地, 补充模块包括 : 分组模块, 用于对第四数据进行维度分组得到第五数 据 ; 补充子模块, 用于补充第五数据中的指标列, 并使用零或空设置指标列的值, 得到第二 数据。 0021 进一步地, 。

18、第二获取模块包括 : 第一查询模块, 用于查询第一维度表中的第一主键 列, 保存第一主键列至第一数据表 ; 第二查询模块, 用于查询第二维度表中的第二主键列, 保存第二主键列至第二数据表 ; 从第一数据表中读取第一主键列和从第二数据表中读取第 二主键列。 0022 采用本发明实施例, 在从数据库中获取待查询的目标数据对应的第一维度表、 第 二维度表以及指标表之后, 将第一维度表和第二维度表与指标表做内联接处理得到第一数 说 明 书 CN 104392001 A 5 3/9 页 6 据 ; 然后获取第一维度表的第一主键列和第二维度表的第二主键列, 组合第一主键列中的 第一主键和第二主键列中的第二。

19、主键得到第三主键列, 并将第三主键列与第一维度表和第 二维度表做内联接处理得到第二数据 ; 合并第一数据和第二数据, 即可得到目标数据。 在本 发明上述实施例中, 将目标数据拆分为两个部分分别进行查询, 通过第一维度表和第二维 度表与指标表的内联接计算得到有意义的数据 ( 即上述实施例中的第一数据 ), 并遍历维 度表补充内联接中删除的数据得到无意义的数据 ( 即上述实施例中的第二数据 ), 合并第 一数据和第二数据得到目标数据, 无需对两个维度表和指标表进行交叉联接, 避免了现有 技术中对维度表中无意义的维度行参与指标表的分组聚合计算, 提高了获取目标数据的效 率, 并且使用内联接可以应用聚。

20、集索引, 通过使用聚集索引可以进一步提高获取目标数据 的效率。 通过本发明实施例, 解决了现有技术中在数据库中查询数据的效率低的问题, 实现 了提高查询目标数据的效率的效果。 附图说明 0023 构成本申请的一部分的附图用来提供对本发明的进一步理解, 本发明的示意性实 施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 : 0024 图 1 是根据本发明实施例的数据库查询方法的流程图 ; 0025 图 2 是根据本发明实施例的一种可选的数据库查询方法的流程图 ; 以及 0026 图 3 是根据本发明实施例的数据库查询装置的示意图。 具体实施方式 0027 首先, 在对本发明实施。

21、例进行描述的过程中出现的部分名词或术语适用于如下解 释 : 0028 SQL 为 Structured Query Language, 即结构化查询语言, SQL 是一种数据库查询 和程序设计语言, 用于存取数据以及查询、 更新和管理关系数据库系统。 0029 维度表即应用系统中的实体表, 如广告投放系统中广告、 项目、 广告主等都是维度 表。 0030 指标表是应用系统用以存储检测或计算出的指标的表, 指标表一般会外键关联一 个或多个维度表, 以表示维度上的指标表现, 如广告投放系统中广告性能表, 该指标表包含 点击、 曝光、 独立点击等指标列, 且外键关联维度表广告和时间。 0031 交叉。

22、联接不带 WHERE 子句, 它返回被联接的两个表所有数据行的笛卡尔积, 返回 结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查 询条件的数据行数。 0032 左联接又名左外联接, 是查询结果集既包括联接表的匹配行, 也包括左联接表的 所有行。 0033 聚集索引是一种索引, 该索引中键值的逻辑顺序决定了表中相应行的物理顺序, 由于聚集索引规定数据在表中的物理存储顺序, 因此一个表只能包含一个聚集索引, 但该 索引可以包含多个列 ( 组合索引 )。 0034 内联接也叫联接, 是最早的一种联接, 还可以被称为普通联接或者自然联接, 内联 接是从结果表中删除与其他被联。

23、接表中没有匹配行的所有行。 说 明 书 CN 104392001 A 6 4/9 页 7 0035 为了使本技术领域的人员更好地理解本发明方案, 下面将结合本发明实施例中的 附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例仅仅是 本发明一部分的实施例, 而不是全部的实施例。基于本发明中的实施例, 本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都应当属于本发明保护的范 围。 0036 需要说明的是, 本发明的说明书和权利要求书及上述附图中的术语 “第一” 、“第 二” 等是用于区别类似的对象, 而不必用于描述特定的顺序或先后次序。 应该。

24、理解这样使用 的数据在适当情况下可以互换, 以便这里描述的本发明的实施例能够以除了在这里图示或 描述的那些以外的顺序实施。此外, 术语 “包括” 和 “具有” 以及他们的任何变形, 意图在于 覆盖不排他的包含, 例如, 包含了一系列步骤或单元的过程、 方法、 系统、 产品或设备不必限 于清楚地列出的那些步骤或单元, 而是可包括没有清楚地列出的或对于这些过程、 方法、 产 品或设备固有的其它步骤或单元。 0037 需要说明的是, 在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。 0038 图1是根据本发明实施例的数据库查询方法的流程。

25、图, 如图1所示, 该数据库查询 方法可以包括如下的步骤 S102 至步骤 S112 : 0039 步骤 S102, 获取待查询的目标数据对应数据库中的第一维度表、 第二维度表以及 指标表。 0040 步骤 S104, 将第一维度表和第二维度表与指标表做内联接处理, 得到第一数据。 0041 步骤 S106, 获取第一维度表的第一主键列和第二维度表的第二主键列。 0042 步骤 S108, 组合第一主键列中的第一主键和第二主键列中的第二主键, 得到第三 主键列。 0043 步骤 S110, 将第三主键列与第一维度表和第二维度表做内联接处理, 得到第二数 据。 0044 步骤 S112, 合并第。

26、一数据和第二数据, 得到目标数据。 0045 采用本发明实施例, 在从数据库中获取待查询的目标数据对应的第一维度表、 第 二维度表以及指标表之后, 将第一维度表和第二维度表与指标表做内联接处理得到第一数 据 ; 然后获取第一维度表的第一主键列和第二维度表的第二主键列, 组合第一主键列中的 第一主键和第二主键列中的第二主键得到第三主键列, 并将第三主键列与第一维度表和第 二维度表做内联接处理得到第二数据 ; 合并第一数据和第二数据, 即可得到目标数据。 在本 发明上述实施例中, 将目标数据拆分为两个部分分别进行查询, 通过第一维度表和第二维 度表与指标表的内联接计算得到有意义的数据 ( 即上述实。

27、施例中的第一数据 ), 并遍历维 度表补充内联接中删除的数据得到无意义的数据 ( 即上述实施例中的第二数据 ), 合并第 一数据和第二数据得到目标数据, 无需对两个维度表和指标表进行交叉联接, 避免了现有 技术中对维度表中无意义的维度行参与指标表的分组聚合计算, 提高了获取目标数据的效 率, 并且使用内联接可以应用聚集索引, 通过使用聚集索引可以进一步提高获取目标数据 的效率。 通过本发明实施例, 解决了现有技术中在数据库中查询数据的效率低的问题, 实现 了提高查询目标数据的效率的效果。 0046 根据本发明上述实施例, 将第一维度表和第二维度表与指标表做内联接处理, 得 说 明 书 CN 1。

28、04392001 A 7 5/9 页 8 到第一数据可以包括 : 将第一维度表和第二维度表与指标表做内联接处理, 得到第三数据 ; 将第三数据做维度分组和指标聚合计算, 得到第一数据。 0047 具体地, 将第一维度表和第二维度表与指标表进行内联接得到第三数据, 然后对 得到的第三数据进行维度分组和指标聚合计算, 得到第一数据。 0048 通过本发明实施例, 通过对维度表和指标表进行内联接处理, 无需对维度表和指 标表进行交叉联接处理, 避免了维度表中无意义的维度行与指标表中的各个指标行进行分 组聚合计算, 提高了获得第一数据的效率, 进而提高了查询目标数据的效率。 0049 根据本发明上述实。

29、施例, 将第三主键列与第一维度表和第二维度表做内联接处 理, 得到第二数据可以包括 : 判断第三主键列中的第三主键是否存在于第一数据 ; 若第三 主键列中的第三主键存在于第一数据, 则舍弃第三主键, 得到更新后的第三主键列 ; 使用更 新后的第三主键列与第一维度表和第二维度表做内联接处理, 得到第四数据 ; 补充第四数 据中的指标列, 得到第二数据。 0050 具体地, 在将第三主键列与第一维度表和第二维度表进行内联接时, 首先判断第 三主键列中的第三主键是否存在于第一数据, 并在第三主键列中的第三主键存在于第一数 据时, 舍弃第三主键, 得到更新后的第三主键列, 并使用更新后的第三主键列与第。

30、一维度表 和第二维度表进行内联接得到第四数据, 然后补充第四数据中的指标列, 得到第二数据。 0051 通过本发明上述实施例, 将第三主键列中与第一数据中的主键重复的主键删除, 并使用更新后的第三主键列与两个维度表进行内联接, 无需对第一数据中已存在的数据进 行再次处理, 可以进一步地提高查询目标数据的效率。 0052 进一步地, 补充第四数据中的指标列, 得到第二数据可以包括 : 对第四数据进行维 度分组得到第五数据 ; 补充第五数据中的指标列, 并使用零或空设置指标列的值, 得到第二 数据。 0053 具体地, 在对第四数据进行维度分组得到第五数据之后, 将第五数据中的指标列 补充为默认空。

31、值 ( 如 0 或空 ), 将补充后的第五数据作为第二数据。 0054 通过本发明上述实施例, 将内联接处理删除无意义的指标列的值重新补充为默认 空值, 保证了目标数据中的各个维度值和指标值的完整性, 避免了由于数据丢失而导致的 目标数据不准确, 提高了查询目标数据的准确度。 0055 在本发明的上述实施例中, 获取第一维度表的第一主键列和第二维度表的第二主 键列可以包括 : 查询第一维度表中的第一主键列, 保存第一主键列至第一数据表 ; 查询第 二维度表中的第二主键列, 保存第二主键列至第二数据表 ; 从第一数据表中读取第一主键 列和从第二数据表中读取第二主键列。 0056 具体地, 在获取。

32、第一维度表的第一主键列和第二维度表的第二主键列时, 将查询 到的第一维度表中的第一主键列保存至第一数据表, 将查询到的第二维度表中的第二主 键列保存至第二数据表, 然后读取第一数据表中的第一主键列和第二数据表中的第二主键 列。 0057 进一步地, 可以通过遍历第一数据表中的第一主键列, 并在遍历第一主键列中的 每一行时, 遍历第二数据表中的第二主键列的各个行, 得到组合行, 将得到的组合行作为第 三主键列。通过本发明上述实施例, 实现了组合第一主键列中的第一主键和第二主键列中 的第二主键得到第三主键列。 说 明 书 CN 104392001 A 8 6/9 页 9 0058 图2是根据本发明。

33、实施例的一种可选的数据库查询方法的流程图, 如图2所示, 该 数据库查询方法可以包括如下步骤 : 0059 步骤 S202, 将维度表 x、 维度表 y 与指标表 z 做内联接, 得到第三数据。 0060 其中, 维度表x即本发明上述实施例中的第一维度表, 维度表y即本发明上述实施 例中的第二维度表, 维度表 z 即本发明上述实施例中的指标表。 0061 步骤 S204, 对第三数据做维度分组和指标聚合计算, 得到有意义的数据 R1。 0062 其中, 数据 R1 即本发明上述实施例中的第一数据。 0063 步骤 S206, 查询出数据表 x 的主键列并存入临时表 x1(x_id)。 0064。

34、 步骤 S208, 查询出数据表 y 的主键列并存入临时表 y1(y_id)。 0065 步骤 S210, 先遍历临时表 x1(x_id) 的所有行, 在遍历临时表 x1(x_id) 的每一行 时, 遍历临时表 y1(y_id) 中的所有行, 得到 x_id, y_id 的组合行。 0066 其中, 组合行即本发明上述实施例中的第三主键列。 0067 步骤 S212, 依次判断 x_id, y_id 中的各行是否在数据 R1 中。 0068 其中, 如果x_id, y_id中的一行在数据R1中, 执行步骤S214 ; 如果x_id, y_id 中的一行不在数据 R1 中, 执行步骤 S216。。

35、 0069 步骤 S214, 舍弃该行。 0070 步骤 S216, 将该行存入临时表 x_y_id。 0071 其中, 临时表 x_y_id 即本发明上述实施例中的更新后的第三主键列。 0072 步骤 S218, 将临时表 x_y_id 与维度表 x 和维度表 y 做内联接, 得到第四数据。 0073 步骤 S220, 对第四数据做维度分组, 并补充指标列为默认空值 ( 如, 0 或空 ), 得到 无意义的数据 R2。 0074 其中, 数据 R2 即本发明上述实施例中的第二数据。 0075 步骤 S222, 将数据 R1 和数据 R2 合并后得到目标数据。 0076 通过本发明上述实施例,。

36、 通过将目标数据拆分为有意义和无意义的两部分数据分 别进行查询计算, 以内联接计算出有意义的数据部分, 以遍历维度表并补充指标列为默认 空值的方法计算出无意义的数据部分, 将有意义和无意义的两部分数据合并在一起得到目 标数据, 可以避免在维度表之间进行交叉联接以及维度表中无意义的维度行参与指标列的 分组聚合计算, 使用内联接可以更好地使用聚集索引, 提高了查询目标数据的效率。 0077 需要说明的是, 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行, 并且, 虽然在流程图中示出了逻辑顺序, 但是在某些情况下, 可以以不 同于此处的顺序执行所示出或描述的步骤。 007。

37、8 图 3 是根据本发明实施例的数据库查询装置的示意图, 如图 3 所示, 该数据库查 询装置可以包括 : 第一获取模块 10, 用于获取待查询的目标数据对应数据库中的第一维度 表、 第二维度表以及指标表 ; 第一内联接模块 30, 用于将第一维度表和第二维度表与指标 表做内联接处理, 得到第一数据 ; 第二获取模块 50, 用于获取第一维度表的第一主键列和 第二维度表的第二主键列 ; 组合模块 70, 用于组合第一主键列中的第一主键和第二主键列 中的第二主键, 得到第三主键列 ; 第二内联接模块 90, 用于将第三主键列与第一维度表和 第二维度表做内联接处理, 得到第二数据 ; 合并模块 1。

38、10, 用于合并第一数据和第二数据, 得到目标数据。 说 明 书 CN 104392001 A 9 7/9 页 10 0079 采用本发明实施例, 在从数据库中获取待查询的目标数据对应的第一维度表、 第 二维度表以及指标表之后, 将第一维度表和第二维度表与指标表做内联接处理得到第一数 据 ; 然后获取第一维度表的第一主键列和第二维度表的第二主键列, 组合第一主键列中的 第一主键和第二主键列中的第二主键得到第三主键列, 并将第三主键列与第一维度表和第 二维度表做内联接处理得到第二数据 ; 合并第一数据和第二数据, 即可得到目标数据。 在本 发明上述实施例中, 将目标数据拆分为两个部分分别进行查询。

39、, 通过第一维度表和第二维 度表与指标表的内联接计算得到有意义的数据 ( 即上述实施例中的第一数据 ), 并遍历维 度表补充内联接中删除的数据得到无意义的数据 ( 即上述实施例中的第二数据 ), 合并第 一数据和第二数据得到目标数据, 无需对两个维度表和指标表进行交叉联接, 避免了现有 技术中对维度表中无意义的维度行参与指标表的分组聚合计算, 提高了获取目标数据的效 率, 并且使用内联接可以应用聚集索引, 通过使用聚集索引可以进一步提高获取目标数据 的效率。 通过本发明实施例, 解决了现有技术中在数据库中查询数据的效率低的问题, 实现 了提高查询目标数据的效率的效果。 0080 根据本发明上述。

40、实施例, 第一内联接模块可以包括 : 第一内联接子模块, 用于将第 一维度表和第二维度表与指标表做内联接处理, 得到第三数据 ; 计算模块, 用于将第三数据 做维度分组和指标聚合计算, 得到第一数据。 0081 具体地, 将第一维度表和第二维度表与指标表进行内联接得到第三数据, 然后对 得到的第三数据进行维度分组和指标聚合计算, 得到第一数据。 0082 通过本发明实施例, 通过对维度表和指标表进行内联接处理, 无需对维度表和指 标表进行交叉联接处理, 避免了维度表中无意义的维度行与指标表中的各个指标行进行分 组聚合计算, 提高了获得第一数据的效率, 进而提高了查询目标数据的效率。 0083 。

41、根据本发明上述实施例, 第二内联接模块可以包括 : 判断模块, 用于判断第三主键 列中的第三主键是否存在于第一数据 ; 舍弃模块, 用于在第三主键列中的第三主键存在于 第一数据的情况下, 舍弃第三主键, 得到更新后的第三主键列 ; 第二内联接子模块, 用于使 用更新后的第三主键列与第一维度表和第二维度表做内联接处理, 得到第四数据 ; 补充模 块, 用于补充第四数据中的指标列, 得到第二数据。 0084 具体地, 在将第三主键列与第一维度表和第二维度表进行内联接时, 首先判断第 三主键列中的第三主键是否存在于第一数据, 并在第三主键列中的第三主键存在于第一数 据时, 舍弃第三主键, 得到更新后。

42、的第三主键列, 并使用更新后的第三主键列与第一维度表 和第二维度表进行内联接得到第四数据, 然后补充第四数据中的指标列, 得到第二数据。 0085 通过本发明上述实施例, 将第三主键列中与第一数据中的主键重复的主键删除, 并使用更新后的第三主键列与两个维度表进行内联接, 无需对第一数据中已存在的数据进 行再次处理, 可以进一步地提高查询目标数据的效率。 0086 进一步地, 补充模块可以包括 : 分组模块, 用于对第四数据进行维度分组得到第五 数据 ; 补充子模块, 用于补充第五数据中的指标列, 并使用零或空设置指标列的值, 得到第 二数据。 0087 具体地, 在对第四数据进行维度分组得到第。

43、五数据之后, 将第五数据中的指标列 补充为默认空值 ( 如 0 或空 ), 将补充后的第五数据作为第二数据。 0088 通过本发明上述实施例, 将内联接处理删除无意义的指标列的值重新补充为默认 说 明 书 CN 104392001 A 10 8/9 页 11 空值, 保证了目标数据中的各个维度值和指标值的完整性, 避免了由于数据丢失而导致的 目标数据不准确, 提高了查询目标数据的准确度。 0089 在本发明的上述实施例中, 第二获取模块可以包括 : 第一查询模块, 用于查询第一 维度表中的第一主键列, 保存第一主键列至第一数据表 ; 第二查询模块, 用于查询第二维度 表中的第二主键列, 保存第。

44、二主键列至第二数据表 ; 从第一数据表中读取第一主键列和从 第二数据表中读取第二主键列。 0090 具体地, 在获取第一维度表的第一主键列和第二维度表的第二主键列时, 将查询 到的第一维度表中的第一主键列保存至第一数据表, 将查询到的第二维度表中的第二主 键列保存至第二数据表, 然后读取第一数据表中的第一主键列和第二数据表中的第二主键 列。 0091 进一步地, 可以通过遍历第一数据表中的第一主键列, 并在遍历第一主键列中的 每一行时, 遍历第二数据表中的第二主键列的各个行, 得到组合行, 将得到的组合行作为第 三主键列。通过本发明上述实施例, 实现了组合第一主键列中的第一主键和第二主键列中 。

45、的第二主键得到第三主键列。 0092 本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、 应 用场景也可以相同。 当然, 需要注意的是, 上述模块涉及的方案可以不限于上述实施例中的 内容和场景, 且上述模块可以运行在计算机终端或移动终端, 可以通过软件或硬件实现。 0093 从以上的描述中, 可以看出, 本发明实现了如下技术效果 : 0094 采用本发明实施例, 在从数据库中获取待查询的目标数据对应的第一维度表、 第 二维度表以及指标表之后, 将第一维度表和第二维度表与指标表做内联接处理得到第一数 据 ; 然后获取第一维度表的第一主键列和第二维度表的第二主键列, 组合第一主键。

46、列中的 第一主键和第二主键列中的第二主键得到第三主键列, 并将第三主键列与第一维度表和第 二维度表做内联接处理得到第二数据 ; 合并第一数据和第二数据, 即可得到目标数据。 在本 发明上述实施例中, 将目标数据拆分为两个部分分别进行查询, 通过第一维度表和第二维 度表与指标表的内联接计算得到有意义的数据 ( 即上述实施例中的第一数据 ), 并遍历维 度表补充内联接中删除的数据得到无意义的数据 ( 即上述实施例中的第二数据 ), 合并第 一数据和第二数据得到目标数据, 无需对两个维度表和指标表进行交叉联接, 避免了现有 技术中对维度表中无意义的维度行参与指标表的分组聚合计算, 提高了获取目标数据。

47、的效 率, 并且使用内联接可以应用聚集索引, 通过使用聚集索引可以进一步提高获取目标数据 的效率。 通过本发明实施例, 解决了现有技术中在数据库中查询数据的效率低的问题, 实现 了提高查询目标数据的效率的效果。 0095 显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们 中的多个模块或步骤制作成单个集成电路模块来实。

48、现。这样, 本发明不限制于任何特定的 硬件和软件结合。 0096 以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 说 明 书 CN 104392001 A 11 9/9 页 12 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。 说 明 书 CN 104392001 A 12 1/3 页 13 图 1 说 明 书 附 图 CN 104392001 A 13 2/3 页 14 图 2 说 明 书 附 图 CN 104392001 A 14 3/3 页 15 图 3 说 明 书 附 图 CN 104392001 A 15 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1