CN108073641B - 查询数据表的方法和装置 - Google Patents
查询数据表的方法和装置 Download PDFInfo
- Publication number
- CN108073641B CN108073641B CN201611022774.XA CN201611022774A CN108073641B CN 108073641 B CN108073641 B CN 108073641B CN 201611022774 A CN201611022774 A CN 201611022774A CN 108073641 B CN108073641 B CN 108073641B
- Authority
- CN
- China
- Prior art keywords
- inequality
- trunc
- data table
- equation
- query
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000005457 optimization Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (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
技术领域
本发明实施例涉及计算机领域,特别涉及计算机领域中的查询数据表的方法和装置。
背景技术
数据库管理***(Database Management System,简称“DBMS”)是位于用户与操作***之间的一层数据库管理软件,数据库调优可以使数据库应用运行得更快,其目标是使数据库有更高的吞吐量和更短的响应时间。
对数据库内核来说,主要实现结构化查询语言(Structured Query Language,简称“SQL”)层面的优化技术,包括:查询重用技术、查询重写规则技术、查询算法优化技术、并行查询的优化技术、分布式查询优化技术及其他优化技术等,但是,在并行计算的并行数据库集群(Massively Parallel Processing Database,简称“MPPDB”)中,优化器模块在执行作业优化时,根据执行作业中语句类型、执行作业的代价估算数值和各个数据节点上的数据分布等,生成最优执行计划,但是优化器模块生成的最优执行计划不一定能做到高效率的优化,例如,在航过公司票务***中的数据推送服务乘客,例如,航空***的数据库中找出在时间相差60分钟内,且同一地点登机的乘客A和乘客B,但是执行过程中发现,在同一差值时间内,有上亿条乘客登机记录,在数据库中查询不同的乘客及时间差值时,效率较低。
发明内容
本发明实施例提供的查询数据表的方法,可以提高查询数据表的效率。
第一方面,提供了一种查询数据表的方法,该方法包括:获取初始查询条件,所述初始查询条件包括第一不等式;将所述第一不等式进行转换处理,得到目标查询条件,所述目标查询条件包括第一等式;根据所述目标查询条件,查询数据表。
具体,将所述第一不等式进行转换,得到目标查询条件,可以是:将所述第一不等式进行转换得到第一等式。
在本发明实施例中,将初始查询条件进行转换得到目标查询条件,该初始查询条件包括第一不等式,该目标查询条件包括第一等式,这样,通过将第一不等转化为第一等式,利用第一不等式进行查询,在一定的数据范围内,满足不等式的数据较多使得查询效率较低,但是通过转化后的等式进行查询,缩小查询范围,能够提高查询的效率。
在某些实现方式中,所述目标查询条件还包括不同于所述第一不等式的第二不等式。
在本发明实施例中,目标查询条件中还包括第二不等式,即可以将初始查询条件中的第一不等式转化为第一等式和第二不等式,可以根据第一等式和第二不等式查询数据表,这样,可以进一步通过第二不等式缩小查询范围,提高查询效率。
在某些实现方式中,所述初始查询条件还包括第二等式,其中,所述根据所述目标查询条件查询数据表,包括:根据所述第一等式和所述第二等式查询所述数据表。
可选地,本发明实施例的查询方法可以是哈希连接(hashjoin)或者是自连接(selfjoin),当是hashjoin时,在hashjoin查询方法中的初始查询条件中还可以包括第二等式,利用hashjoin的第二等式以及转化后的第一等式查询数据表,或者利用第二等式、第一等式和第二不等式查询数据表,可以解决在hashjoin算法处理时利用第二等式过滤后每个hash桶对应数据量巨大的问题,通过第一等式,第二不等式和第二等式过滤合适的数据,降低hash桶中的数据量。
在某些实现方式中,若所述第一不等式的形式为:A-B>C,则所述将所述第一不等式进行转换处理,得到目标查询条件,包括:将A-B>C转化为trunc(A/C)=trunc(B/C)+n,其中,所述第一等式具体为trunc(A/C)=trunc(B/C)+n,trunc(·)为将数字截尾取整的运算,C为大于1的正整数,n为整数,即可以为正整数也可以为负整数,A和B为所述数据表中的数值,并且A和B为正整数。
在某些实现方式中,若所述第一不等式的形式为:A-B>C,则所将所述第一不等式进行转换处理,得到目标查询条件,包括:将A-B>C转化为trunc(A/C)=trunc(B/C)+n和A>B,其中,所述第二不等式具体为A>B,所述第一等式具体为trunc(A/C)=trunc(B/C)+n,trunc(·)为将数字截尾取整的运算,C为大于1的正整数,n为整数,即可以为正整数也可以为负整数,A和B为所述数据表中的数值,并且A和B为正整数。
在某些实现方式中,若所述第一不等式的形式为:D-E<F,则将所述第一不等式进行转换处理,得到目标查询条件,包括:将D-E<F转化为trunc(D/F)=trunc(E/F)+m,所述第一等式具体为trunc(D/F)=trunc(E/F)+m,trunc(·)为将数字截尾取整运算,F为大于1的正整数,m为整数,即可以为正整数也可以为负整数,D和E为所述数据表中的数值,并且D和E为正整数。
在某些实现方式中,若所述第一不等式的形式为:D-E<F,则所述将所述第一不等式进行转换处理,得到目标查询条件,包括:将D-E<F转化为trunc(D/F)=trunc(E/F)+m和D>E,其中,所述第二不等式具体为D>E,所述第一等式具体为trunc(D/F)=trunc(E/F)+m,trunc(·)为将数字截尾取整运算,F为大于1的正整数,m为整数,即可以为正整数也可以为负整数,D和E为所述数据表中的数值,并且D和E为正整数。
在某些实现方式中,若所述第一不等式的形式为:G-H<I,则所述将所述第一不等式进行转换处理,得到目标查询条件,包括:将G-H<I转化为trunc(G/I)=trunc(H/I)+p,其中,所述第一等式具体为trunc(G/I)=trunc(H/I)+p,trunc(·)为将数字截尾取整运算,I为大于1的正整数,p为整数,即可以为正整数也可以为负整数,G和H为所述数据表中的数值,并且G和H为正整数。
在某些实现方式中,若所述第一不等式的形式为:G-H<I,则所述将所述第一不等式进行转换处理,得到目标查询条件,包括:将G-H<I转化为trunc(G/I)=trunc(H/I)+p和G<H,其中,所述第二不等式具体为G<H,所述第一等式具体为trunc(G/I)=trunc(H/I)+p,trunc(·)为将数字截尾取整,I为大于1的正整数,p为整数,即可以为正整数也可以为负整数,G和H为所述数据表中的数值,并且G和H为正整数。
在某些实现方式中,所述初始查询条件为自连接selfjoin初始查询条件。selfjoin初始查询条件的查询是指对一张表可以和自身进行连接,这样,可以简化查询的复杂度,提高查询的效率。
在某些实现方式中,在将所述第一不等式进行转换处理,得到目标查询条件之前,所述方法还包括:判断所述数据表包括的数据量是否大于第一阈值;所述将所述第一不等式进行转换处理,得到目标查询条件,包括:当所述数据表包括的数据量大于所述第一阈值时,将所述第一不等式进行转换处理,得到所述目标查询条件。
这样,对于海量数据的查询,若只采用第一不等式进行查询,则需要遍历数据表中所有数据,找出满足第一不等式的数据,这样数据量越大,查询时间会成倍的增加,通过将第一不等式转化第二不等式和第一等式,在遍历数据表中的数据时,找出满足第二不等式和第一等式条件的数据,这样会降低查询的复杂度,减少查询的时间,进一步提高查询的效率。
第二方面,提供了一种查询数据表的装置,用于执行第一方面或第一方面任意可能的实现方式中的方法。
第三方面,提供了一种查询数据表的装置,该装置包括:接收器、发送器、存储器、处理器和总线***。其中,该接收器、该发送器、该存储器和该处理器通过该总线***相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
图1示出了本发明实施例的应用场景的示意图。
图2示出了根据本发明实施例的查询数据表的方法示意图。
图3示出了根据本发明实施例的另一查询数据表的方法示意图。
图4示出了根据本发明实施例的查询数据表的装置示意图。
图5示出了根据本发明实施例的另一查询数据表的装置示意图。
具体实施方式
应理解,本发明实施例的技术方案可以应用于各种数据库***,例如,关系型数据库管理***(Relational Database Management System,简称“RDBMS”),非关系型(NoSQL)数据库***,大规模并行处理数据库(Massively Parallel Processing Database,简称“MPP-DB”),等等,本发明实施例对此不做限定。
还应理解,本发明实施例以SQL语言为例进行描述,但本发明实施例也可以采用其他语言,例如,面向对象的查询语言(Hibernate Query Language,简称“HQL”),等等,本发明实施例对此不做限定。
下面先介绍一下数据库***及其结构。数据库***一般包括数据库、硬件、软件和人员四个组成部分。数据库(DataBase,DB)是指长期存储在计算机内部或外部的存储介质上的、有组织、可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。硬件是指构成计算机***的各种物理设备,即包括存储所需的内部设备,也包括存储所需的外部设备。硬件的配置应满足整个数据库***的需要。软件包括操作***、DBMS及应用程序。人员包括最终用户,他们利用***的接口或查询语言访问数据库,如向数据库中添加数据、删除数据或查询数据。DBMS是数据库***的核心软件,在操作***的支持下科学地组织、存储数据和高效获取、维护数据,其可以使得用户可以通过不同的方法去建立、修改、优化或查询数据库中的数据,例如,DBMS可以包括优化器模块来进行逻辑查询优化。
上述对数据库***的介绍只是为了更好地理解本发明实施例的技术方案,不应对应用本发明实施例中的查询数据表的方法构成限制。
图1示出了查询数据的过程,例如,以开源数据库Postgres为例,描述SQL语句的查询过程包括以下步骤:
S101,开始查询。
S102,分析SQL初始查询条件,通过经词法分析、语法分析和语义检查后转换为一颗查询树(Query Tree)传给下一个阶段。
本发明实施例为例描述方便以SQL语句为例进行描述,应理解本发明实施例可以采用其他的初始查询条件进行描述,初始查询条件的形式可以是类SQL语句,例如“select姓名from个人基本信息where年龄>30”。或者,初始查询条件的形式也可以是自然语言,例如“查询个人基本信息中年龄大于30岁的人员姓名”。
S103,根据S101得到的查询树进行视图重写,例如,可以用基表进行重写。
S104,根据视图重写后的结果确定是否需要集合操作。
S105,当需要进行集合操作时,将集合分解为普通SQL,将分解后的普通SQL执行S106。
S106,当不需要进行集合操作时,进行逻辑优化查询,例如,运用查询技术,进行等价交换查询。
S107,在进行逻辑优化查询之后,进行物理优化查询,例如,在多个查询路径中找出代价最小的查询路径。
应理解,S106可以在S107之前,或者之后,本发明实施例对此不作限制。
S108,将逻辑优化查询和物理优化查询得到的计划进行分组、排序、聚集、去重优化。
S109,执行器执行计划。
S110,返回执行器执行完的执行计划的查询结果。
应理解,图1所述的查询数据的过程只是为了更好地理解本发明实施例的技术方案,不应对应用本发明实施例中的查询数据表的方法构成限制。
本发明实施例主要描述S106步骤中的逻辑优化查询,例如海量的用户数据的存储和查询的数据量都非常大,通常情况会采用分布式数据库,对数据进行分片,以提高***的查询性能。但是,从目前的使用情况来看,分布式数据库并没有很好地解决海量用户数据查询的问题。例如,用户的数量可达10亿,用户的属性可达100万,这样的数据存储在传统的数据库中,可达到百亿列、百万行。在这样的业务场景下,即使采用分布式数据库,查询的数据量依然非常大。本发明实施例可以针对海量数据的查询条件进行优化,以降低查询的数据量,通常情况下最优的查询计划可以理解为查询时间最短的查询技术。下面针对本发明实施例的查询优化方法进行描述。
图2示出了本发明实施例的查询优化方法200,例如该方法200可以由数据库***中优化器执行,该方法200包括:
S210,获取初始查询条件,所述初始查询条件包括第一不等式。
作为一个可选实施例,所述初始查询条件为selfjoin初始查询条件,selfjoin初始查询条件的查询是指对一张表可以和自身进行连接,这样,可以简化查询的复杂度,提高查询的效率。
S220,将所述第一不等式进行转换处理,得到目标查询条件,所述目标查询条件包括第一等式。
作为一个可选实施例,若所述第一不等式的形式为:A-B>C,则所述第一等式具体为:trunc(A/C)=trunc(B/C)+n,所述第二不等式具体为A>B,其中,trunc(·)为截尾取整运算,C为大于1的正整数,n为整数,即可以为正整数也可以为负整数,A和B为所述数据表中的数值,并且A和B为正整数。可选地,S220,包括:将A-B>C转化为trunc(A/C)=trunc(B/C)+n,或者S220,包括:将A-B>C转化为trunc(A/C)=trunc(B/C)+n和A>B,其中,所述第二不等式为A>B,所述第一等式为trunc(A/C)=trunc(B/C)+n。
作为一个可选实施例,若所述第一不等式的形式为:D-E<F,所述第一等式具体为:trunc(D/F)=trunc(E/F)+m所述第二不等式具体为D>E,其中,trunc(·)为截尾取整运算,F为大于1的正整数,m为整数,即可以为正整数也可以为负整数,D和E为所述数据表中的数值,并且D和E为正整数;可选地,S220,包括:将D-E<F转化为trunc(D/F)=trunc(E/F)+m;或者S220,包括将D-E<F转化为trunc(D/F)=trunc(E/F)+m和D>E,其中,所述第二不等式为D>E,所述第一等式为trunc(D/F)=trunc(E/F)+m。
作为一个可选实施例,若所述第一不等式的形式为:G-H<I,所述第一等式具体为:trunc(D/F)=trunc(E/F)+m所述第二不等式具体为D>E,其中,trunc(·)为截尾取整运算,F为大于1的正整数,m为整数,D和E为所述数据表中的数值,并且D和E为正整数;可选地S220,包括:将G-H<I转化为trunc(G/I)=trunc(H/I)+p;或者S220包括:将G-H<I转化为trunc(G/I)=trunc(H/I)+p和G<H,其中,所述第二不等式为G<H,所述第一等式为trunc(G/I)=trunc(H/I)+p。
S230,根据所述目标查询条件,查询数据表,具体地,可以根据所述目标查询条件中的第一等式,查询数据表。
作为一个可选实施例,所述初始查询条件包括第二等式,其中,所述S230,包括:根据所述第一等式和所述第二等式查询数据表,或者所述S230包括:根据所述第一等式、第二等式和第二不等式查询所述数据表查询。具体地,优化器模块在根据SQL语句生成最优的执行计划,需要底层扫描数据,然后对扫描过的数据通过hashjoin来过滤合适的数据,其中,在hashjoin查询的过程中需要包括第二等式,并且初始查询条件中包括第一不等式时,则需要将第一不等式重写为第二不等式和第一等式,利用hashjoin的第二等式,重写后的第二不等式和第一等式进行语句的查询,可以解决在hashjoin算法处理时利用第二等式过滤后每个hash桶对应数据量巨大的问题,通过第一等式,第二不等式和第二等式过滤合适的数据,降低hash桶中的数据量。
作为一个例子,现有技术中找出在时间相差60分钟内,且同一地点登机的乘客A和乘客B的SQL初始查询条件为:
Select*a.id,b.id from db a,db b where a.id<>b.id and a.port=b.portand a.time–b.time<60。
通过本发明实施例的初始查询条件重写后,找出在时间相差60分钟内,且同一地点登机的乘客A和乘客B的SQL目标查询条件为:
Select*a.id,b.id from db a,db b where a.id<>b.id and a.port=b.portand trunc(a.time/60)=trunk(b.time/60)and a.time>=b.time。
作为一个例子,图3对查询数据表的方法300进行描述,该方法300包括:
S301,开始查询。
S302,判断查询方法是否为selfjoin方法,若不是selfjoin方法,则跳到S307。
S303,在S302中,若是selfjoin方法,则判断查询代价,确定代价估算行数是否很大,例如判断行数大于某一特定预设阈值,当行数小于预设阈值时,或者例如前述的:当所述数据表中的数值的数量大于所述第一阈值时,认为数据量大,则跳到S307。
S304,在S303中,若行数大于预设阈值时,则判断初始查询条件中是否与可转换的非等值表达式,若初始查询条件中没有可转换的非等值表达式,则跳到S307,例如该非等值表达式为前述的第一不等式。
S305,若S304中,初始查询条件中存在可转换的非等值表达式,则将非等值表达式转换为等值表达式,可选地,将该非等值表达式转化为另外一个非等值表达式和等值表达式,例如,该等值表达式可以为前述的第一等式,另外一个非等式表达式可以为前述的第二不等式。
S306,对目标查询条件进行重写,这里的目标查询条件可以包括等值表达式;或者,该目标查询条件可以包括另外一个非等值表达式和等值表达式。
S307,物理查询优化阶段。
S308,结束查询优化。
应理解,图3所示的方法仅是示例性的,S302,S303,S304三个判断的过程可以是满足至少一个条件,而并不是全部需要满足。例如,可以没有S302或S303等,本发明实施例不限于此。
因此,当对海量的数据进行查询时,使用hashjoin算法中的第二等式和初始查询条件中的第一不等式进行查询时,查询效率较低,通过将第一不等式转化成第二不等式和第一等式条件,增加了查询数据的条件,进一步可以提高查询数据的效率。
上面结合图2和图3对本发明实施例实施提供的查询数据表的方法进行描述,下面结合图4和图5描述本发明实施例提供的查询数据表的装置。
图4示出了本发明实施例提供的查询数据表的装置300,该装置300包括:
获取模块410,用于获取初始查询条件,所述初始查询条件包括第一不等式;
转化模块420,用于将所述第一不等式进行转换处理,得到目标查询条件,所述目标查询条件包括第一等式;
查询模块430,用于根据所述目标查询条件,查询数据表。
作为一个可选实施例,所述初始查询条件还包括第二等式,所述查询模块430具体用于:根据所述第一等式和所述第二等式查询所述数据表。
作为一个可选实施例,所述目标查询条件还包括不同于所述第一不等式的第二不等式。
作为一个可选实施例,若所述第一不等式的形式为:A-B>C,则所述第一等式具体为:trunc(A/C)=trunc(B/C)+n,所述第二不等式具体为A>B,其中,trunc(·)为截尾取整运算,C为大于1的正整数,n为整数,A和B为所述数据表中的数值,并且A和B为正整数。
作为一个可选实施例,若所述第一不等式的形式为:D-E<F,所述第一等式具体为:trunc(D/F)=trunc(E/F)+m所述第二不等式具体为D>E,其中,trunc(·)为截尾取整运算,F为大于1的正整数,m为整数,D和E为所述数据表中的数值,并且D和E为正整数。
作为一个可选实施例,若所述第一不等式的形式为:G-H<I,则所述第一等式具体为trunc(G/I)=trunc(H/I)+p和G<H,所述第二不等式为G<H,其中,trunc(·)为截尾取整运算,I为大于1的正整数,p为整数,G和H为所述数据表中的数值,并且G和H为正整数。
作为一个可选实施例,所述初始查询条件为自连接selfjoin初始查询条件。
作为一个可选实施例,则所述转化模块420具体还用于:在将所述第一不等式进行转换处理,得到目标查询条件之前,判断所述数据表包括的数据量是否大于第一阈值;当所述数据表包括的数据量大于所述第一阈值时,将所述第一不等式进行转换处理,得到所述目标查询条件。
应理解,这里的装置400以功能模块的形式体现。这里的术语“模块”可以指ASIC、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,装置400可以具体为上述实施例中的优化器,装置400可以用于执行上述方法实施例中与优化器对应的各个流程和/或步骤,为避免重复,在此不再赘述。
图5示出了本发明实施例提供的查询数据表的装置500,该装置500包括:接收器510、处理器520、发送器530、存储器540和总线***550。其中,接收器510、处理器520、发送器530和存储器540通过总线***550相连,该存储器540用于存储指令,该处理器520用于执行该存储器540存储的指令,以控制该接收器510接收信号,并控制该发送器530发送指令。
其中,接收器510用于获取初始查询条件,所述初始查询条件包括第一不等式;处理器520将所述第一不等式进行转换处理,得到目标查询条件,所述目标查询条件包括第一等式;所述处理器520还用于根据所述目标查询条件,查询数据表。
作为一个可选实施例,所述初始查询条件还包括第二等式,所述处理器520具体用于:根据所述第一等式和所述第二等式查询所述数据表。
作为一个可选实施例,所述目标查询条件还包括不同于所述第一不等式的第二不等式。
作为一个可选实施例,若所述第一不等式的形式为:A-B>C,则所述第一等式具体为:trunc(A/C)=trunc(B/C)+n,所述第二不等式具体为A>B,其中,trunc(·)为截尾取整运算,C为大于1的正整数,n为整数,A和B为所述数据表中的数值,并且A和B为正整数。
作为一个可选实施例,若所述第一不等式的形式为:D-E<F,所述第一等式具体为:trunc(D/F)=trunc(E/F)+m所述第二不等式具体为D>E,其中,trunc(·)为截尾取整运算,F为大于1的正整数,m为整数,D和E为所述数据表中的数值,并且D和E为正整数。
作为一个可选实施例,若所述第一不等式的形式为:G-H<I,则所述第一等式具体为trunc(G/I)=trunc(H/I)+p和G<H,所述第二不等式为G<H,其中,trunc(·)为截尾取整运算,I为大于1的正整数,p为整数,G和H为所述数据表中的数值,并且G和H为正整数。
作为一个可选实施例,所述初始查询条件为自连接selfjoin初始查询条件。
作为一个可选实施例,则所述处理器520具体还用于:在将所述第一不等式进行转换处理,得到目标查询条件之前,判断所述数据表包括的数据量是否大于第一阈值;当所述数据表包括的数据量大于所述第一阈值时,将所述第一不等式进行转换处理,得到所述目标查询条件。
也应理解,装置500可以具体为上述实施例中的优化器,并且可以用于执行上述方法实施例中与优化器对应的各个步骤和/或流程。可选地,该存储器540可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器520可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器520可以执行上述方法实施例中与优化器对应的各个步骤。
应理解,在本发明实施例中,编号“第一”、“第二”仅仅为了区分不同的对象,例如,为了区分不同的用户标识或不同的属性标识等,不应对本发明实施例的保护范围构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称为“ROM”)、随机存取存储器(Random Access Memory,简称为“RAM”)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种查询数据表的方法,其特征在于,所述方法包括:
获取初始查询条件,所述初始查询条件包括第一不等式和第二等式,所述初始查询条件为哈希连接hashjoin初始查询条件;
将所述第一不等式进行转换处理,得到第一等式和第二不等式,所述第二不等式不同于第一不等式;
根据所述第一等式、所述第二等式和所述第二不等式,查询数据表;
若所述第一不等式的形式为:A-B>C,则所述第一等式为:trunc(A/C)=trunc(B/C)+n,C为大于1的正整数,n为整数,A和B为所述数据表中的数值,并且A和B为正整数;或者
若所述第一不等式的形式为:D-E<F,则所述第一等式为:trunc(D/F)=trunc(E/F)+m,F为大于1的正整数,m为整数,D和E为所述数据表中的数值,并且D和E为正整数;或者
若所述第一不等式的形式为:G-H<I,则所述第一等式为trunc(G/I)=trunc(H/I)+p,I为大于1的正整数,p为整数,G和H为所述数据表中的数值,并且G和H为正整数;
其中,trunc(·)为截尾取整运算。
2.根据权利要求1所述的方法,其特征在于,当所述第一不等式的形式为:A-B>C,则所述第二不等式为A>B。
3.根据权利要求1所述的方法,其特征在于,当所述第一不等式的形式为:D-E<F,则所述第二不等式为D>E。
4.根据权利要求1所述的方法,其特征在于,当所述第一不等式的形式为:G-H<I,则所述第二不等式为G<H。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在将所述第一不等式进行转换处理,得到第一等式和第二不等式之前,所述方法还包括:
判断所述数据表包括的数据量是否大于第一阈值;
所述将所述第一不等式进行转换处理,得到第一等式和第二不等式,包括:
当所述数据表包括的数据量大于所述第一阈值时,将所述第一不等式进行转换处理,得到所述第一等式和所述第二不等式。
6.一种查询数据表的装置,其特征在于,所述装置包括:
获取模块,用于获取初始查询条件,所述初始查询条件包括第一不等式和第二等式,所述初始查询条件为哈希连接hashjoin初始查询条件;
转化模块,用于将所述第一不等式进行转换处理,得到第一等式和第二不等式,所述第二不等式不同于第一不等式;
查询模块,根据所述第一等式、所述第二等式和所述第二不等式,查询数据表;
若所述第一不等式的形式为:A-B>C,则所述第一等式为:trunc(A/C)=trunc(B/C)+n,C为大于1的正整数,n为整数,A和B为所述数据表中的数值,并且A和B为正整数;或者
若所述第一不等式的形式为:D-E<F,则所述第一等式为:trunc(D/F)=trunc(E/F)+m,F为大于1的正整数,m为整数,D和E为所述数据表中的数值,并且D和E为正整数;或者
若所述第一不等式的形式为:G-H<I,则所述第一等式为trunc(G/I)=trunc(H/I)+p,I为大于1的正整数,p为整数,G和H为所述数据表中的数值,并且G和H为正整数;
其中,trunc()为截尾取整运算。
7.根据权利要求6所述的装置,其特征在于,当所述第一不等式的形式为:A-B>C,则所述第二不等式为A>B。
8.根据权利要求6所述的装置,其特征在于,当所述第一不等式的形式为:D-E<F,则所述第二不等式为D>E。
9.根据权利要求6所述的装置,其特征在于,当所述第一不等式的形式为:G-H<I,则所述第二不等式为G<H。
10.根据权利要求6至9中任一项所述的装置,其特征在于,则所述转化模块具体还用于:
在将所述第一不等式进行转换处理,得到第一等式和第二不等式之前,判断所述数据表包括的数据量是否大于第一阈值;
当所述数据表包括的数据量大于所述第一阈值时,将所述第一不等式进行转换处理,得到所述第一等式和所述第二不等式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611022774.XA CN108073641B (zh) | 2016-11-18 | 2016-11-18 | 查询数据表的方法和装置 |
PCT/CN2017/081321 WO2018090557A1 (zh) | 2016-11-18 | 2017-04-21 | 查询数据表的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611022774.XA CN108073641B (zh) | 2016-11-18 | 2016-11-18 | 查询数据表的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073641A CN108073641A (zh) | 2018-05-25 |
CN108073641B true CN108073641B (zh) | 2020-06-16 |
Family
ID=62146122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611022774.XA Active CN108073641B (zh) | 2016-11-18 | 2016-11-18 | 查询数据表的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108073641B (zh) |
WO (1) | WO2018090557A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656946B (zh) * | 2018-09-29 | 2022-12-16 | 创新先进技术有限公司 | 一种多表关联查询方法、装置及设备 |
CN110147384B (zh) * | 2019-04-17 | 2023-06-20 | 平安科技(深圳)有限公司 | 数据查找模型建立方法、装置、计算机设备和存储介质 |
CN111666279B (zh) * | 2020-04-14 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN113296964B (zh) * | 2021-07-28 | 2022-01-04 | 阿里云计算有限公司 | 数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1342291A (zh) * | 1999-02-19 | 2002-03-27 | Pc多媒体公司 | 匹配引擎 |
CN103838817A (zh) * | 2012-11-26 | 2014-06-04 | 埃森哲环球服务有限公司 | 数据一致性管理 |
CN103995879A (zh) * | 2014-05-27 | 2014-08-20 | 华为技术有限公司 | 基于olap***的数据查询方法、装置及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110145220A1 (en) * | 2009-12-10 | 2011-06-16 | Ramakumar Kosuru | System and method for executing a query |
-
2016
- 2016-11-18 CN CN201611022774.XA patent/CN108073641B/zh active Active
-
2017
- 2017-04-21 WO PCT/CN2017/081321 patent/WO2018090557A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1342291A (zh) * | 1999-02-19 | 2002-03-27 | Pc多媒体公司 | 匹配引擎 |
CN103838817A (zh) * | 2012-11-26 | 2014-06-04 | 埃森哲环球服务有限公司 | 数据一致性管理 |
CN103995879A (zh) * | 2014-05-27 | 2014-08-20 | 华为技术有限公司 | 基于olap***的数据查询方法、装置及*** |
Non-Patent Citations (1)
Title |
---|
二元约束数据库***模型及其查询优化的研究与实现;苏伟;《中国优秀硕士学位论文全文数据库信息科技辑》;20090115(第01期);I138-773页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108073641A (zh) | 2018-05-25 |
WO2018090557A1 (zh) | 2018-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2608074B1 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
US11068439B2 (en) | Unsupervised method for enriching RDF data sources from denormalized data | |
CN113711197B (zh) | 查询计划中自适应聚合操作符和属性的放置 | |
CN105335403B (zh) | 数据库访问方法及装置、数据库*** | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
US9720986B2 (en) | Method and system for integrating data into a database | |
EP1351165A2 (en) | Stratified sampling of data in a database system | |
CN102945240A (zh) | 一种支持分布式计算的关联规则挖掘算法实现方法及装置 | |
CN107291770B (zh) | 一种分布式***中海量数据的查询方法及装置 | |
US11461333B2 (en) | Vertical union of feature-based datasets | |
US20170154123A1 (en) | System and method for processing metadata to determine an object sequence | |
CN108197187B (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
US11100087B2 (en) | Data tokenization system maintaining data integrity | |
CN108140022B (zh) | 数据查询方法和数据库*** | |
CN111125045B (zh) | 一种轻量级etl处理平台 | |
US9881055B1 (en) | Language conversion based on S-expression tabular structure | |
US11989199B2 (en) | Optimizing flow of data within ETL data processing pipeline | |
CN105589969A (zh) | 一种数据处理方法及装置 | |
US9959295B1 (en) | S-expression based computation of lineage and change impact analysis | |
CN103577560B (zh) | 一种输入数据库操作指令的方法和装置 | |
CN115470355A (zh) | 轨道交通信息查询方法、装置、电子设备和存储介质 | |
CN112435151A (zh) | 一种基于关联分析的政务信息数据处理方法及*** | |
JP2016071837A (ja) | データ仮想化装置及び大規模データ処理プログラム | |
KR101638048B1 (ko) | 맵리듀스를 이용한 sql 질의처리방법 | |
CN117331919B (zh) | 数据库联合查询方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |