CN104392001A - 数据库查询方法和装置 - Google Patents

数据库查询方法和装置 Download PDF

Info

Publication number
CN104392001A
CN104392001A CN201410779290.4A CN201410779290A CN104392001A CN 104392001 A CN104392001 A CN 104392001A CN 201410779290 A CN201410779290 A CN 201410779290A CN 104392001 A CN104392001 A CN 104392001A
Authority
CN
China
Prior art keywords
data
primary key
key column
dimension table
dimension
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
Application number
CN201410779290.4A
Other languages
English (en)
Other versions
CN104392001B (zh
Inventor
廖小利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201410779290.4A priority Critical patent/CN104392001B/zh
Publication of CN104392001A publication Critical patent/CN104392001A/zh
Application granted granted Critical
Publication of CN104392001B publication Critical patent/CN104392001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

数据库查询方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据库查询方法和装置。
背景技术
在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或空),将补充后的第五数据作为第二数据。
通过本发明上述实施例,将内联接处理删除无意义的指标列的值重新补充为默认空值,保证了目标数据中的各个维度值和指标值的完整性,避免了由于数据丢失而导致的目标数据不准确,提高了查询目标数据的准确度。
在本发明的上述实施例中,第二获取模块可以包括:第一查询模块,用于查询第一维度表中的第一主键列,保存第一主键列至第一数据表;第二查询模块,用于查询第二维度表中的第二主键列,保存第二主键列至第二数据表;从第一数据表中读取第一主键列和从第二数据表中读取第二主键列。
具体地,在获取第一维度表的第一主键列和第二维度表的第二主键列时,将查询到的第一维度表中的第一主键列保存至第一数据表,将查询到的第二维度表中的第二主键列保存至第二数据表,然后读取第一数据表中的第一主键列和第二数据表中的第二主键列。
进一步地,可以通过遍历第一数据表中的第一主键列,并在遍历第一主键列中的每一行时,遍历第二数据表中的第二主键列的各个行,得到组合行,将得到的组合行作为第三主键列。通过本发明上述实施例,实现了组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
从以上的描述中,可以看出,本发明实现了如下技术效果:
采用本发明实施例,在从数据库中获取待查询的目标数据对应的第一维度表、第二维度表以及指标表之后,将第一维度表和第二维度表与指标表做内联接处理得到第一数据;然后获取第一维度表的第一主键列和第二维度表的第二主键列,组合第一主键列中的第一主键和第二主键列中的第二主键得到第三主键列,并将第三主键列与第一维度表和第二维度表做内联接处理得到第二数据;合并第一数据和第二数据,即可得到目标数据。在本发明上述实施例中,将目标数据拆分为两个部分分别进行查询,通过第一维度表和第二维度表与指标表的内联接计算得到有意义的数据(即上述实施例中的第一数据),并遍历维度表补充内联接中删除的数据得到无意义的数据(即上述实施例中的第二数据),合并第一数据和第二数据得到目标数据,无需对两个维度表和指标表进行交叉联接,避免了现有技术中对维度表中无意义的维度行参与指标表的分组聚合计算,提高了获取目标数据的效率,并且使用内联接可以应用聚集索引,通过使用聚集索引可以进一步提高获取目标数据的效率。通过本发明实施例,解决了现有技术中在数据库中查询数据的效率低的问题,实现了提高查询目标数据的效率的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据库查询方法,其特征在于,包括:
获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;
将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据;
获取所述第一维度表的第一主键列和所述第二维度表的第二主键列;
组合所述第一主键列的第一主键和所述第二主键列的第二主键,得到第三主键列;
将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据;
合并所述第一数据和所述第二数据,得到所述目标数据。
2.根据权利要求1所述的数据库查询方法,其特征在于,将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据包括:
将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第三数据;
将所述第三数据做维度分组和指标聚合计算,得到所述第一数据。
3.根据权利要求1所述的数据库查询方法,其特征在于,将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据包括:
判断所述第三主键列中的第三主键是否存在于所述第一数据;
若所述第三主键列中的所述第三主键存在于所述第一数据,则舍弃所述第三主键,得到更新后的所述第三主键列;
使用更新后的所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第四数据;
补充所述第四数据中的指标列,得到所述第二数据。
4.根据权利要求3所述的数据库查询方法,其特征在于,补充所述第四数据中的指标列,得到所述第二数据包括:
对所述第四数据进行维度分组得到第五数据;
补充所述第五数据中的所述指标列,并使用零或空设置所述指标列的值,得到所述第二数据。
5.根据权利要求1至4中任意一项所述的数据库查询方法,其特征在于,获取所述第一维度表的第一主键列和所述第二维度表的第二主键列包括:
查询所述第一维度表中的所述第一主键列,保存所述第一主键列至第一数据表;
查询所述第二维度表中的所述第二主键列,保存所述第二主键列至第二数据表;
从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键列。
6.一种数据库查询装置,其特征在于,包括:
第一获取模块,用于获取待查询的目标数据对应数据库中的第一维度表、第二维度表以及指标表;
第一内联接模块,用于将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第一数据;
第二获取模块,用于获取所述第一维度表的第一主键列和所述第二维度表的第二主键列;
组合模块,用于组合所述第一主键列中的第一主键和所述第二主键列中的第二主键,得到第三主键列;
第二内联接模块,用于将所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第二数据;
合并模块,用于合并所述第一数据和所述第二数据,得到所述目标数据。
7.根据权利要求6所述的数据库查询装置,其特征在于,所述第一内联接模块包括:
第一内联接子模块,用于将所述第一维度表和所述第二维度表与所述指标表做内联接处理,得到第三数据;
计算模块,用于将所述第三数据做维度分组和指标聚合计算,得到所述第一数据。
8.根据权利要求6所述的数据库查询装置,其特征在于,所述第二内联接模块包括:
判断模块,用于判断所述第三主键列中的第三主键是否存在于所述第一数据;
舍弃模块,用于在所述第三主键列中的所述第三主键存在于所述第一数据的情况下,舍弃所述第三主键,得到更新后的所述第三主键列;
第二内联接子模块,用于使用更新后的所述第三主键列与所述第一维度表和所述第二维度表做内联接处理,得到第四数据;
补充模块,用于补充所述第四数据中的指标列,得到所述第二数据。
9.根据权利要求8所述的数据库查询装置,其特征在于,所述补充模块包括:
分组模块,用于对所述第四数据进行维度分组得到第五数据;
补充子模块,用于补充所述第五数据中的所述指标列,并使用零或空设置所述指标列的值,得到所述第二数据。
10.根据权利要求6至9中任意一项所述的数据库查询装置,其特征在于,所述第二获取模块包括:
第一查询模块,用于查询所述第一维度表中的所述第一主键列,保存所述第一主键列至第一数据表;
第二查询模块,用于查询所述第二维度表中的所述第二主键列,保存所述第二主键列至第二数据表;
从所述第一数据表中读取所述第一主键列和从所述第二数据表中读取所述第二主键列。
CN201410779290.4A 2014-12-15 2014-12-15 数据库查询方法和装置 Active CN104392001B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410779290.4A CN104392001B (zh) 2014-12-15 2014-12-15 数据库查询方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410779290.4A CN104392001B (zh) 2014-12-15 2014-12-15 数据库查询方法和装置

Publications (2)

Publication Number Publication Date
CN104392001A true CN104392001A (zh) 2015-03-04
CN104392001B CN104392001B (zh) 2017-11-14

Family

ID=52609905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410779290.4A Active CN104392001B (zh) 2014-12-15 2014-12-15 数据库查询方法和装置

Country Status (1)

Country Link
CN (1) CN104392001B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933909A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN106933902A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 数据多维度自由剖析的查询方法及装置
CN107193971A (zh) * 2017-05-25 2017-09-22 山东浪潮商用系统有限公司 指标数据分析模型查询方法
CN108021618A (zh) * 2017-11-13 2018-05-11 北京天元创新科技有限公司 一种数据查询方法及系统
CN108241692A (zh) * 2016-12-26 2018-07-03 北京国双科技有限公司 数据的查询方法及装置
CN109388654A (zh) * 2017-08-04 2019-02-26 北京京东尚科信息技术有限公司 一种查询数据表的方法和装置
CN110019544A (zh) * 2017-09-30 2019-07-16 北京国双科技有限公司 数据查询方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027692A1 (en) * 2003-07-29 2005-02-03 International Business Machines Corporation. Method, system, and program for accessing data in a database table
CN103593447A (zh) * 2013-11-18 2014-02-19 北京国双科技有限公司 用于数据库表的数据处理方法和装置
CN103810300A (zh) * 2014-03-10 2014-05-21 北京国双科技有限公司 用于非索引覆盖的数据查询方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027692A1 (en) * 2003-07-29 2005-02-03 International Business Machines Corporation. Method, system, and program for accessing data in a database table
CN103593447A (zh) * 2013-11-18 2014-02-19 北京国双科技有限公司 用于数据库表的数据处理方法和装置
CN103810300A (zh) * 2014-03-10 2014-05-21 北京国双科技有限公司 用于非索引覆盖的数据查询方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933909A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN106933902A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 数据多维度自由剖析的查询方法及装置
CN106933902B (zh) * 2015-12-31 2020-02-07 北京国双科技有限公司 数据多维度自由剖析的查询方法及装置
CN106933909B (zh) * 2015-12-31 2020-06-12 北京国双科技有限公司 多维度数据的查询方法及装置
CN108241692A (zh) * 2016-12-26 2018-07-03 北京国双科技有限公司 数据的查询方法及装置
CN108241692B (zh) * 2016-12-26 2020-08-11 北京国双科技有限公司 数据的查询方法及装置
CN107193971A (zh) * 2017-05-25 2017-09-22 山东浪潮商用系统有限公司 指标数据分析模型查询方法
CN109388654A (zh) * 2017-08-04 2019-02-26 北京京东尚科信息技术有限公司 一种查询数据表的方法和装置
CN110019544A (zh) * 2017-09-30 2019-07-16 北京国双科技有限公司 数据查询方法及系统
CN108021618A (zh) * 2017-11-13 2018-05-11 北京天元创新科技有限公司 一种数据查询方法及系统
CN108021618B (zh) * 2017-11-13 2020-10-16 北京天元创新科技有限公司 一种数据查询方法及系统

Also Published As

Publication number Publication date
CN104392001B (zh) 2017-11-14

Similar Documents

Publication Publication Date Title
CN104392001A (zh) 数据库查询方法和装置
CN111382174B (zh) 多方数据联合查询方法、装置、服务器和存储介质
CN108733713B (zh) 数据仓库中的数据查询方法及装置
CN103514201B (zh) 一种非关系型数据库的数据查询方法和装置
CN107038200A (zh) 业务数据处理方法及系统
US20150278268A1 (en) Data encoding and corresponding data structure
CN104504077B (zh) 网页访问数据的统计方法和装置
CN108052635A (zh) 一种异构数据源统一联合查询方法
CN104408179A (zh) 数据表中数据处理方法和装置
CN109213758B (zh) 数据存取方法、装置、设备及计算机可读存储介质
CN104424018A (zh) 分布式计算事务处理方法及装置
CN105550225A (zh) 索引构建方法、查询方法及装置
CN110399387A (zh) 基于表关联关系动态生成查询sql的方法及装置
CN105550332A (zh) 一种基于双层索引结构的起源图查询方法
CN104714986A (zh) 三维图片搜索方法与三维图片搜索系统
CN109002470A (zh) 知识图谱构建方法及装置、客户端
CN112419044A (zh) 信用审核的方法、设备、电子装置和存储介质
CN115905630A (zh) 一种图数据库查询方法、装置、设备及存储介质
CN104408189A (zh) 关键词排名的展示方法和装置
CN108874873A (zh) 数据查询方法、装置、存储介质及处理器
CN114860851A (zh) 数据处理方法、装置、设备及存储介质
CN106326249A (zh) 数据整合处理方法及装置
CN113607183A (zh) 一种车辆的运输路线规划方法、装置、存储介质及终端
US10719516B2 (en) Scalable multistage processing of queries with percentile functions
CN112598385A (zh) 物料选配方法及装置、计算机可读介质和电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and device for database query

Effective date of registration: 20190531

Granted publication date: 20171114

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.