CN112100198A - 数据库sql语句优化方法、装置、设备及存储介质 - Google Patents
数据库sql语句优化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112100198A CN112100198A CN202010942505.5A CN202010942505A CN112100198A CN 112100198 A CN112100198 A CN 112100198A CN 202010942505 A CN202010942505 A CN 202010942505A CN 112100198 A CN112100198 A CN 112100198A
- Authority
- CN
- China
- Prior art keywords
- query
- statement
- item
- query statement
- outer layer
- 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 53
- 238000005457 optimization Methods 0.000 title claims description 38
- 230000006870 function Effects 0.000 claims description 109
- 238000013507 mapping Methods 0.000 claims description 54
- 238000009795 derivation Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24542—Plan optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库SQL语句优化方法、装置、设备及存储介质,包括:确定目标SQL语句是否为待优化的SQL语句,其中,目标SQL语句包括派生表内的内层查询语句以及派生表外的外层查询语句,内层查询语句及外层查询语句均包括GROUP BY子句,当确定目标SQL语句为待优化的SQL语句时,根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。该数据库SQL语句优化方法,通过消除目标SQL语句中的内层查询语句中的GROUP BY子句的方式,对目标SQL语句进行优化,减少了优化后的SQL语句执行过程中的分组次数,从而,提升了查询效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及数据库结构化查询语言(Structured Query Language,SQL)语句优化方法、装置、设备及存储介质。
背景技术
SQL语句是最重要也是最常用的关系数据库操作语言。分组(GROUP BY)子句是SQL标准中用于对数据进行分组处理的子句。
在当前通用的数据库技术中,为了实现一个包含GROUP BY子句的SQL语句,不管该SQL语句所对应的表结构和数据特征如何,都需要将表中的数据取出来,按照GROUP BY指定的分组项来计算分组。
但是,在某些特定情况下,这些GROUP BY分组是重复多余的且数据量很大,这导致SQL语句的执行效率较低。
发明内容
本发明提供一种数据库SQL语句优化方法、装置、设备及存储介质,以解决目前的数据库SQL语句执行效率低的技术问题。
第一方面,本发明实施例提供一种数据库SQL语句优化方法,包括:
确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;
当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
第二方面,本发明实施例提供一种数据库SQL语句优化装置,包括:
确定模块,用于确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;
获取模块,用于当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的数据库SQL语句优化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面提供的数据库SQL语句优化方法。
本实施例提供一种数据库SQL语句优化方法、装置、设备及存储介质,该方法包括:确定目标SQL语句是否为待优化的SQL语句,其中,目标SQL语句包括派生表内的内层查询语句以及派生表外的外层查询语句,内层查询语句及外层查询语句均包括GROUP BY子句,当确定目标SQL语句为待优化的SQL语句时,根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。该数据库SQL语句优化方法中,一方面,只有在目标SQL语句为待优化的SQL语句时,才对该目标SQL语句进行优化,避免了对非待优化SQL语句强行优化而导致的错误,提高了目标SQL语句的执行的准确性,另一方面,通过消除内层查询语句中的GROUP BY子句的方式,对目标SQL语句进行优化,减少了优化后的SQL语句执行过程中的分组次数,从而,提升了查询效率。
附图说明
图1为本发明提供的数据库SQL语句优化方法实施例的流程示意图;
图2为本发明提供的数据库SQL语句优化方法实施例中获取优化后的目标SQL语句的流程示意图;
图3为本发明提供的数据库SQL语句优化装置实施例的结构示意图;
图4为数据库SQL语句优化装置中获取模块的一种实现方式的结构示意图;
图5为本发明提供的计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明提供的数据库SQL语句优化方法实施例的流程示意图。本实施例适用于对包含多层GROUP BY子句的SQL语句进行优化的场景中。本实施例可以由数据库SQL语句优化装置来执行,该数据库SQL语句优化装置可以由软件和/或硬件的方式实现,该数据库SQL语句优化装置可以集成于计算机设备中。如图1所示,本实施例提供的数据库SQL语句优化方法包括如下步骤:
步骤101:确定目标SQL语句是否为待优化的SQL语句。
其中,目标SQL语句包括派生表内的内层查询语句以及派生表外的外层查询语句,内层查询语句及外层查询语句均包括GROUP BY子句。
具体地,本实施例中的目标SQL语句中包括派生表。本实施例中的派生表指的是将SQL语句中的子查询做为一个表来处理,执行该子查询后得出的新表。
本实施例中,将派生表内的查询语句称为内层查询语句。将派生表外的查询语句称为外层查询语句。该目标SQL语句的内层查询语句及外层查询语句均包括GROUP BY子句。
对于用户输入的SQL语句,数据库管理***先对其进行语法和语义解析,之后根据SQL语句涉及的表的统计信息选择最优的执行计划,按照这个执行计划执行得到结果。如果在执行过程中,需要多次分组,会导致SQL语句的执行效率较低。
为了提高包含多层GROUP BY子句的SQL语句的执行效率,本实施例中可以对该目标SQL语句进行优化。可以通过对目标SQL语句进行词法、语法及语义分析,根据分析结果,确定目标SQL语句是否为待优化的SQL语句。
以下对需要优化的原因进行说明。
例如假如t1有数据:
如果内层查询语句对c1,c2分组,对c3求和,外层查询语句只对c1分组,对sum(c3)求和。内层查询语句为:
SELECT c1,c2,SUM(c3)AS x
FROM t1
GROUP BY c1,c2;
可以看到,t1中前两行的c1及c2相同,后两行的c1及c2相同。因此,执行内层查询语句后,是将t1的前两行分为一组,后两行分为一组,其结果集为:
c1 c2 sum(c3)
1 1 2
1 2 2
然后,在内层查询语句的执行结果的基础上,外层查询语句再对c1分组,对sum(c3)再求和。外层查询语句为:
得到结果为:
c1 sum(c3)
1 4
上述外层查询语句中的v指的是内层查询语句执行后所形成的表,即派生表。
基于上述示例,如果去除内层查询语句中的分组,直接外层对c1分组,对c3求和,t1的所有数据为一组,c3的和为4,结果与上述执行两次分组的结果一样。优化后的SQL语句为:
SELECT c1,SUM(c3)
FROM t1
GROUP BY c1;
从这个示例可以看出,内层分组只是相当于对外层分组的子集先做了一次运算。因此,可以将内层查询语句中的GROUP BY子句消除,两层GROUP BY子句合并为一层,去掉内层分组后的目标SQL语句跟原始SQL语句效果等价。内层分组消除,减少了分组次数,大大提升了查询效率。
可选地,步骤101的一种实现方式为:当判断目标SQL语句满足预设的优化条件时,确定目标SQL语句为待优化的SQL语句。
其中,优化条件包括以下子条件:
a):外层查询语句中没有where过滤条件。
b):外层查询语句的FROM项为派生表。
c):外层查询语句中的GROUP BY子句的分组项是内层查询语句中的GROUP BY子句的分组项的子集。举例来说,假设内层查询语句中的GROUP BY子句的分组项为c1及c2,那么,外层查询语句中的GROUP BY子句的分组项可以为c1,或者,为c2,或者,为c1及c2。
d):外层查询语句中的集函数的属性满足预设集函数属性条件。
其中,预设集函数属性条件包括:外层查询语句中的集函数的类型为预设集函数类型;外层查询语句中的集函数的参数为常量和/或派生表的列;以及,若外层查询语句中的集函数的参数为派生表的列且派生表的该列对应的派生表的查询项为集函数,并且,外层查询语句中的GROUP BY子句的分组项少于内层查询语句中的GROUP BY子句的分组项,则外层查询语句中的集函数的类型与对应的派生表的查询项中的集函数的类型相同;若外层查询语句中的集函数的参数为常量,和/或,外层查询语句中的集函数的参数为派生表的列且派生表的该列对应的派生表的查询项不为集函数,并且,外层查询语句中的GROUP BY子句的分组项少于内层查询语句中的GROUP BY子句的分组项,则外层查询语句中的集函数的类型为预设集函数类型中的预设集函数子类型。
需要说明的是,本实施例中,派生表的查询项与内层查询语句中的查询项是相同的描述。派生表的列与派生表的查询项(即,内层查询语句中的查询项)之间具有对应关系。基于上述示例,派生表名为v,派生表的列为:v.c1,v.c2,v.x,派生表的查询项为:c1,c2,sum(c3)。派生表的列v.c1对应的派生表的查询项为c1,派生表的列v.c2对应的派生表的查询项为c2,派生表的列v.x对应的派生表的查询项为sum(c3)。当外层查询语句中的集函数的参数为派生表的列时,可以基于派生表的列与派生表的查询项之间的对应关系,确定出外层查询语句中的集函数的参数对应的派生表的查询项。
其中,在外层查询语句中的集函数的参数为派生表的列且该列对应的派生表的查询项为集函数,并且,外层查询语句中的GROUP BY子句的分组项少于内层查询语句中的GROUP BY子句的分组项的场景中,需要外层查询语句中的集函数的类型与对应的派生表的查询项中的集函数的类型相同的原因为:因为外层分组项少,也就是说派生表的每个分组都是在外层分组的子集,即,外层分组的范围大,假设集函数为SUM函数,先给每个子集求和,再对求和的结果求和,跟直接对外层分组求和等价,同理其他集函数也需要等价,才能实现优化后的目标SQL语句与目标SQL语句等价。
可选地,上述的预设集函数类型包括以下至少一项:求最大值(MAX)函数、求最小值(MIN)函数、求和(SUM)函数或者求平均值(AVG)函数。上述的预设集函数子类型包括:MIN函数和/或MAX函数。
其中,在外层查询语句中的集函数的参数为常量,和/或,外层查询语句中的集函数的参数为派生表的列且该列对应的派生表的查询项不为集函数,并且,外层查询语句中的GROUP BY子句的分组项少于内层查询语句中的GROUP BY子句的分组项中,需要外层查询语句中的集函数的类型为MIN函数和/或MAX函数的原因为:因为内层分完组后行数会减少,这时对列或常量求和、求平均值跟直接外层分组求和求平均值不等价。
进一步地,若外层查询语句中的集函数的参数为派生表的列且该列对应的派生表的查询项为集函数,并且,外层查询语句中的GROUP BY子句的分组项与内层查询语句中的GROUP BY子句的分组项完全一致,则外层查询语句中的集函数的类型与对应的派生表的查询项中的集函数的类型可以不相同。这是因为,外层查询语句中的GROUP BY子句的分组项与内层查询语句中的GROUP BY子句的分组项完全一致,经过内层分组再进行外层分组,实际每组只有一个数据(因为内层已经分好组了,而且,外层的分组项与内层的分组项一样,相当于外层不需要再分组,而直接用内层分好的组即可,已分好的组中,每组当然只有一个数据),外层查询语句中的集函数对该一个数据进行求最大、求最小值、求和还是求平均值,处理结果都是一样的。因此,在这种情况下,外层查询语句中的集函数的类型与对应的派生表的查询项中的集函数的类型可以不相同。需要说明的是,优化条件中的各个子条件为“和”的关系,即,当确定目标SQL语句同时满足预设的优化条件包括的子条件时,确定目标SQL语句为待优化的SQL语句。
上述优化条件较为全面,可以避免对不满足优化条件的SQL语句进行优化,而导致的错误。
步骤102:当确定目标SQL语句为待优化的SQL语句时,根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
具体地,在步骤202中,对目标SQL语句进行优化,优化的方式为根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
本实施例中的优化后的目标SQL语句与目标SQL语句等价,但是,由于消除了内层查询语句中的GROUP BY子句,在执行优化后的目标SQL语句时,分组次数减少,从而,提高了SQL语句的执行效率。
可选地,步骤102具体可以为:确定内层查询语句的查询项,以及,派生表的列之间的映射关系;根据映射关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
根据上述方式,获取优化后的目标SQL语句实现简单、高效。
进一步地,为了节省存储空间,确定出的映射关系可以以链表的形式存储。
以步骤101的例子为例进行说明,内层查询语句的查询项为(c1,c2,SUM(c3)),派生表的列为(v.c1,v.c2,v.x),可以确定映射关系为(c1,v.c1),(c2,v.c2),(SUM(c3),v.x)。
图2为本发明提供的数据库SQL语句优化方法实施例中获取优化后的目标SQL语句的流程示意图。如图2所示,本实施例提供的获取优化后的目标SQL语句包括如下步骤:
步骤201:当确定外层查询语句中的查询项为待替换的查询项时,根据映射关系,对外层查询语句中的待替换的查询项进行替换,获取替换后的查询项。
在步骤201中,根据外层查询语句中的查询项的不同,替换过程也不相同,以下进行详细描述。
具体地,当外层查询语句中的查询项为集函数,并且,集函数的参数为常量时,确定该外层查询语句中的查询项不是待替换的查询项。也即,当外层查询语句中的查询项不为集函数,或者,外层查询语句中的查询项为集函数,但是,集函数的参数不为常量时,确定该外层查询语句中的查询项为待替换的查询项。
本实施例中,当确定外层查询语句中的查询项为待替换的查询项时,外层查询语句中待替换的查询项可能与派生表的列有关联,而派生表的列与内层查询语句的查询项之间具有对应关系。因此,可以基于该内层查询语句的查询项与派生表的列之间的映射关系,对外层查询语句中待替换的查询项进行替换。
一种场景中,若外层查询语句中的第一查询项不为集函数,则将第一查询项替换为第一查询项在映射关系中对应的内层查询语句中的查询项。还以步骤101的例子为例进行说明,外层查询语句中的查询项v.c1不为集函数,因此,将v.c1替换为v.c1在映射关系(c1,v.c1)中对应的内层查询语句中的查询项c1。
另一种场景中,若外层查询语句中的第二查询项为集函数,并且,第二查询项的参数不为常量,则确定第二查询项的参数在映射关系中对应的内层查询语句中的查询项。
在该场景中,在外层查询语句中的第二查询项为集函数,并且,第二查询项的参数不为常量时,基于第二查询项在映射关系中对应的内层查询语句中的查询项的类型的不同,有以下两种实现方式。
若第二查询项的参数在映射关系中对应的内层查询语句中的查询项不为集函数,则将第二查询项中的参数替换为,第二查询项在映射关系中对应的内层查询语句中的查询项。
若第二查询项的参数在映射关系中对应的内层查询语句中的查询项为集函数,则将第二查询项替换为,第二查询项在映射关系中对应的内层查询语句中的查询项。还以步骤101的例子为例进行说明,外层查询语句中的查询项SUM(v.x)为集函数,并且,SUM(v.x)的参数v.x在映射关系(SUM(c3),v.x)中对应的内层查询语句中的查询项SUM(c3)为集函数,因此,将查询项SUM(v.x)整体替换为SUM(c3)。以上实现方式中,基于外层查询语句中的查询项的不同,替换过程也不相同,可以实现针对性地替换,保证优化后的目标SQL语句与目标SQL语句等价。
步骤202:将外层查询语句的FROM项,替换为内层查询语句中FROM项,获取替换后的FROM项。
具体地,还以步骤101的例子为例进行说明,将外层查询语句中的FROM项:SELECTc1,c2,SUM(c3)AS x
FROM t1
GROUP BY c1,c2)v
替换为内层查询语句中的FROM项,即,t1。
需要说明的是,步骤201与步骤202之间没有时序关系。
步骤203:根据替换后的查询项以及替换后的FROM项,生成优化后的目标SQL语句。
在完成步骤201及步骤202之后,基于替换后的查询项以及替换后的FROM项,生成优化后的目标SQL语句。可以理解的是,如果外层查询语句中的查询项中存在没有被替换的查询项时,步骤203具体可以为:根据未被替换的查询项、替换后的查询项以及替换后的FROM项,生成优化后的目标SQL语句。
上述步骤201至步骤203可以实现对目标SQL语句的全面优化,效率较高且准确性较高。
进一步地,在步骤203之前,还可以包括如下步骤:当根据映射关系,确定需要替换外层查询语句中的GROUP BY子句的分组项时,对外层查询语句中的GROUP BY子句的分组项进行替换,获取外层查询语句中的GROUP BY子句的替换后的分组项;在外层查询语句中包括ORDER BY子句,并且,根据映射关系,确定需要替换外层查询语句中的ORDER BY子句的排序项时,对外层查询语句中的ORDER BY子句的排序项进行替换,获取外层查询语句中的ORDER BY子句的替换后的排序项;在内层查询语句中包括where过滤项时,将内层查询语句中的where过滤项设置为外层查询语句的where过滤项。相对应地,步骤203具体为:根据替换后的查询项,外层查询语句中的GROUP BY子句的替换后的分组项,替换后的FROM项,外层查询语句中的ORDER BY子句的替换后的排序项以及外层查询语句的where过滤项,生成优化后的目标SQL语句。这些步骤可以实现对目标SQL语句的全面优化,保证了优化后的目标SQL语句与目标SQL语句等价。
当根据映射关系,确定外层查询语句中的GROUP BY子句的分组项在映射关系中存在对应的内层查询语句中的查询项时,确定需要替换外层查询语句中的GROUP BY子句的分组项。替换过程可以为:将外层查询语句中的GROUP BY子句的分组项,替换为该分组项在映射关系中对应的内层查询语句中的查询项。
当根据映射关系,确定外层查询语句中的ORDER BY子句的排序项在映射关系中存在对应的内层查询语句中的查询项时,确定需要替换外层查询语句中的ORDER BY子句的排序项。替换过程可以为:外层查询语句中的ORDER BY子句的排序项,替换为该排序项在映射关系中对应的内层查询语句中的查询项。
还以步骤101的例子为例进行说明,外层查询语句中的GROUP BY子句的分组项v.c1需要进行替换,将其替换为v.c1在映射关系(c1,v.c1)中对应的内层查询语句中的查询项c1。基于上述描述,优化后的目标SQL语句为:
SELECT c1,SUM(c3)
FROM t1
GROUP BY c1;
以下再以一个具体的例子,说明上述过程。假设目标SQL语句如下所示。
先执行步骤101,确定该目标SQL语句为待优化的SQL语句。
之后,执行步骤102。
具体为:先确定出内层查询语句的查询项,以及,派生表的列之间的映射关系。内层查询语句的查询项为(c1、c2和sum(c3))。派生表的列为(v.c1、v.c2、v.x)。确定出的映射关系为(c1,v.c1),(c2,v.c2),(sum(c3),v.x)。
之后,执行步骤201。外层查询语句中的查询项v.c1、MAX(v.c2)、MAX(v.x)以及SUM(v.x)均为待替换的查询项。
外层查询语句中的查询项v.c1不为集函数,其在映射关系(c1,v.c1)中对应的内层查询语句中的查询项为c1。因此,将v.c1替换为c1。
外层查询语句中的查询项MAX(v.c2)为集函数,其参数v.c2在映射关系(c2,v.c2)中对应的内层查询语句中的查询项为c2。c2不是集函数,因此,将MAX(v.c2)中的参数v.c2替换为c2,替换后的查询项为MAX(c2)。
外层查询语句中的查询项MAX(v.x)为集函数,其参数v.x在映射关系(sum(c3),v.x)中对应的内层查询语句中的查询项为sum(c3)。sum(c3)为集函数,因此,将MAX(v.x)整体替换为sum(c3),替换后的查询项为sum(c3)。这是因为,外层查询语句中GROUP BY子句的分组项与内层查询语句中的GROUP BY子句的分组项完全一致,外层分组经过内层分组后,实际每组只有一行数据,MAX(v.x)不需要再计算,可以直接等价sum(c3),将整个MAX(v.x)用sum(c3)替换。
外层查询语句中的查询项SUM(v.x)为集函数,其参数v.x在映射关系(sum(c3),v.x)中对应的内层查询语句中的查询项为sum(c3)。sum(c3)为集函数,因此,将SUM(v.x)整体替换为sum(c3),替换后的查询项为sum(c3)。
将外层查询语句的FROM项:
替换为内层查询语句中FROM项t1,替换后的FROM项为t1。
确定需要替换外层查询语句中的GROUP BY子句的分组项,将外层查询语句中的GROUP BY子句的分组项v.c1替换为c1,将v.c2替换为c2。
由于内层查询语句中包括where过滤项,因此,将内层查询语句中的where过滤项设置为外层查询语句的where过滤项。
基于上述步骤,优化后的目标SQL语句为:
该优化后的目标SQL语句相较于目标SQL语句,GROUP BY分组次数减少,执行效率较高。
在获取到优化后的目标SQL语句后,用优化后的目标SQL语句代替目标SQL语句。对优化后的目标SQL语句重新进行词法、语法及语义分析并执行。
本实施例提供的数据库SQL语句优化方法,包括:确定目标SQL语句是否为待优化的SQL语句,其中,目标SQL语句包括派生表内的内层查询语句以及派生表外的外层查询语句,内层查询语句及外层查询语句均包括GROUP BY子句,当确定目标SQL语句为待优化的SQL语句时,根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。该数据库SQL语句优化方法中,一方面,只有在目标SQL语句为待优化的SQL语句时,才对该目标SQL语句进行优化,避免了对非待优化SQL语句强行优化而导致的错误,提高了目标SQL语句的执行的准确性,另一方面,通过消除内层查询语句中的GROUP BY子句的方式,对目标SQL语句进行优化,减少了优化后的SQL语句执行过程中的分组次数,从而,提升了查询效率。
图3为本发明提供的数据库SQL语句优化装置实施例的结构示意图。如图3所示,本实施例提供的数据库SQL语句优化装置包括:确定模块31以及获取模块32。
确定模块31,用于确定目标SQL语句是否为待优化的SQL语句。
其中,目标SQL语句包括派生表内的内层查询语句以及派生表外的外层查询语句,内层查询语句及外层查询语句均包括GROUP BY子句。
可选地,确定模块31具体用于:当判断目标SQL语句满足预设的优化条件时,确定目标SQL语句为待优化的SQL语句。其中,优化条件包括以下子条件:外层查询语句中没有where过滤条件,外层查询语句的FROM项为派生表,外层查询语句中的GROUP BY子句的分组项是内层查询语句中的GROUP BY子句的分组项的子集,以及,外层查询语句中的集函数的属性满足预设集函数属性条件。
更具体地,预设集函数属性条件包括:外层查询语句中的集函数的类型为预设集函数类型;外层查询语句中的集函数的参数为常量和/或派生表的列;以及,若外层查询语句中的集函数的参数为派生表的列且派生表的该列对应的派生表的查询项为集函数,并且,外层查询语句中的GROUP BY子句的分组项少于内层查询语句中的GROUP BY子句的分组项,则外层查询语句中的集函数的类型与对应的派生表的查询项中的集函数的类型相同;若外层查询语句中的集函数的参数为常量,和/或,外层查询语句中的集函数的参数为派生表的列且派生表的该列对应的派生表的查询项不为集函数,并且,外层查询语句中的GROUPBY子句的分组项少于内层查询语句中的GROUP BY子句的分组项,则外层查询语句中的集函数的类型为预设集函数类型中的预设集函数子类型。
获取模块32,用于当确定目标SQL语句为待优化的SQL语句时,根据内层查询语句的查询项与派生表的列的对应关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
图4为数据库SQL语句优化装置中获取模块的一种实现方式的结构示意图。如图4所示,获取模块32具体包括:确定子模块321以及获取子模块322。
确定子模块321,用于确定内层查询语句的查询项,以及,派生表的列之间的映射关系。
获取子模块322,用于根据映射关系,消除内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
更具体地,获取子模块322具体用于:当确定外层查询语句中的查询项为待替换的查询项时,根据映射关系,对外层查询语句中的待替换的查询项进行替换,获取替换后的查询项;将外层查询语句的FROM项,替换为内层查询语句中FROM项,获取替换后的FROM项;根据替换后的查询项以及替换后的FROM项,生成优化后的目标SQL语句。
更具体地,在根据映射关系,对外层查询语句中的待替换的查询项进行替换,获取替换后的查询项的方面,获取子模块322具体用于若外层查询语句中的第一查询项不为集函数,则将第一查询项替换为第一查询项在映射关系中对应的内层查询语句中的查询项;若外层查询语句中的第二查询项为集函数,并且,第二查询项的参数不为常量,则确定第二查询项的参数在映射关系中对应的内层查询语句中的查询项;若第二查询项的参数在映射关系中对应的内层查询语句中的查询项不为集函数,则将第二查询项中的参数替换为,第二查询项在映射关系中对应的内层查询语句中的查询项;若第二查询项的参数在映射关系中对应的内层查询语句中的查询项为集函数,则将第二查询项替换为,第二查询项在映射关系中对应的内层查询语句中的查询项。
可选地,该装置中的获取子模块322具体还用于:当根据映射关系,确定需要替换外层查询语句中的GROUP BY子句的分组项时,对外层查询语句中的GROUP BY子句的分组项进行替换,获取外层查询语句中的GROUP BY子句的替换后的分组项;在外层查询语句中包括ORDER BY子句,并且,根据映射关系,确定需要替换外层查询语句中的ORDER BY子句的排序项时,对外层查询语句中的ORDER BY子句的排序项进行替换,获取外层查询语句中的ORDER BY子句的替换后的排序项;在内层查询语句中包括where过滤项时,将内层查询语句中的where过滤项设置为外层查询语句的where过滤项。获取子模块322具体还用于:根据替换后的查询项,外层查询语句中的GROUP BY子句的替换后的分组项,替换后的FROM项,外层查询语句中的ORDER BY子句的替换后的排序项以及外层查询语句的where过滤项,生成优化后的目标SQL语句。
本发明实施例所提供的数据库SQL语句优化装置可执行本发明任意实施例所提供的数据库SQL语句优化方法,具备执行方法相应的功能模块和有益效果。
图5为本发明提供的计算机设备的结构示意图。如图5所示,该计算机设备包括处理器50和存储器51。该计算机设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;该计算机设备的处理器50和存储器51可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库SQL语句优化方法对应的程序指令以及模块(例如,数据库SQL语句优化装置中的确定模块31以及获取模块32)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据库SQL语句优化方法。
存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实施例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据库SQL语句优化方法,该方法包括:
确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;
当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库SQL语句优化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据库SQL语句优化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库结构化查询语言SQL语句优化方法,其特征在于,包括:
确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;
当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
2.根据权利要求1所述的方法,其特征在于,所述确定目标SQL语句是否为待优化的SQL语句,包括:
当判断所述目标SQL语句满足预设的优化条件时,确定所述目标SQL语句为待优化的SQL语句;其中,所述优化条件包括以下子条件:所述外层查询语句中没有where过滤条件,所述外层查询语句的FROM项为所述派生表,所述外层查询语句中的GROUP BY子句的分组项是所述内层查询语句中的GROUP BY子句的分组项的子集,以及,所述外层查询语句中的集函数的属性满足预设集函数属性条件。
3.根据权利要求2所述的方法,其特征在于,所述预设集函数属性条件包括:
所述外层查询语句中的集函数的类型为预设集函数类型;
所述外层查询语句中的集函数的参数为常量和/或所述派生表的列;以及,
若所述外层查询语句中的集函数的参数为所述派生表的列且所述派生表的列对应的所述派生表的查询项为集函数,并且,所述外层查询语句中的GROUP BY子句的分组项少于所述内层查询语句中的GROUP BY子句的分组项,则所述外层查询语句中的集函数的类型与对应的所述派生表的查询项中的集函数的类型相同;
若所述外层查询语句中的集函数的参数为常量,和/或,所述外层查询语句中的集函数的参数为所述派生表的列且所述派生表的列对应的所述派生表的查询项不为集函数,并且,所述外层查询语句中的GROUP BY子句的分组项少于所述内层查询语句中的GROUP BY子句的分组项,则所述外层查询语句中的集函数的类型为所述预设集函数类型中的预设集函数子类型。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句,包括:
确定所述内层查询语句的查询项,以及,所述派生表的列之间的映射关系;
根据所述映射关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
5.根据权利要求4所述的方法,其特征在于,所述根据所述映射关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句,包括:
当确定所述外层查询语句中的查询项为待替换的查询项时,根据所述映射关系,对所述外层查询语句中的待替换的查询项进行替换,获取替换后的查询项;
将所述外层查询语句的FROM项,替换为所述内层查询语句中FROM项,获取替换后的FROM项;
根据所述替换后的查询项以及所述替换后的FROM项,生成所述优化后的目标SQL语句。
6.根据权利要求5所述的方法,其特征在于,所述根据所述替换后的查询项以及所述替换后的FROM项,生成所述优化后的目标SQL语句之前,所述方法还包括:
当根据所述映射关系,确定需要替换所述外层查询语句中的GROUP BY子句的分组项时,对所述外层查询语句中的GROUP BY子句的分组项进行替换,获取所述外层查询语句中的GROUP BY子句的替换后的分组项;
在所述外层查询语句中包括ORDER BY子句,并且,根据所述映射关系,确定需要替换所述外层查询语句中的ORDER BY子句的排序项时,对所述外层查询语句中的ORDER BY子句的排序项进行替换,获取所述外层查询语句中的ORDER BY子句的替换后的排序项;
在所述内层查询语句中包括where过滤项时,将所述内层查询语句中的where过滤项设置为所述外层查询语句的where过滤项;
所述根据所述替换后的查询项以及所述替换后的FROM项,生成所述优化后的目标SQL语句,包括:
根据所述替换后的查询项,所述外层查询语句中的GROUP BY子句的替换后的分组项,所述替换后的FROM项,所述外层查询语句中的ORDER BY子句的替换后的排序项以及所述外层查询语句的where过滤项,生成所述优化后的目标SQL语句。
7.根据权利要求5或6所述的方法,其特征在于,所述根据所述映射关系,对所述外层查询语句中的待替换的查询项进行替换,获取替换后的查询项,包括:
若所述外层查询语句中的第一查询项不为集函数,则将所述第一查询项替换为所述第一查询项在所述映射关系中对应的内层查询语句中的查询项;
若所述外层查询语句中的第二查询项为集函数,并且,所述第二查询项的参数不为常量,则确定所述第二查询项的参数在所述映射关系中对应的内层查询语句中的查询项;
若所述第二查询项的参数在所述映射关系中对应的内层查询语句中的查询项不为集函数,则将所述第二查询项中的参数替换为,所述第二查询项在所述映射关系中对应的内层查询语句中的查询项;
若所述第二查询项的参数在所述映射关系中对应的内层查询语句中的查询项为集函数,则将所述第二查询项替换为,所述第二查询项在所述映射关系中对应的内层查询语句中的查询项。
8.一种数据库结构化查询语言SQL语句优化装置,其特征在于,包括:
确定模块,用于确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;
获取模块,用于当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任一所述的数据库SQL语句优化方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一所述的数据库SQL语句优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010942505.5A CN112100198B (zh) | 2020-09-09 | 2020-09-09 | 数据库sql语句优化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010942505.5A CN112100198B (zh) | 2020-09-09 | 2020-09-09 | 数据库sql语句优化方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100198A true CN112100198A (zh) | 2020-12-18 |
CN112100198B CN112100198B (zh) | 2023-12-08 |
Family
ID=73751822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010942505.5A Active CN112100198B (zh) | 2020-09-09 | 2020-09-09 | 数据库sql语句优化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100198B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204568A (zh) * | 2021-05-26 | 2021-08-03 | 上海达梦数据库有限公司 | 一种结构化查询语句优化方法、装置、设备及存储介质 |
CN114969101A (zh) * | 2022-07-13 | 2022-08-30 | 北京奥星贝斯科技有限公司 | Sql语句的处理方法及装置 |
CN115168408A (zh) * | 2022-08-16 | 2022-10-11 | 北京永洪商智科技有限公司 | 基于强化学习的查询优化方法、装置、设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6339770B1 (en) * | 1999-08-12 | 2002-01-15 | International Business Machines Corporation | Query simplification and optimization involving eliminating grouping column from group by operation corresponds to group by item that is constant |
US6775681B1 (en) * | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of grouping sets by reduction to group-by clause, with or without a rollup operator, using temporary tables |
US6826562B1 (en) * | 1999-11-29 | 2004-11-30 | International Business Machines Corporation | Method of simplifying and optimizing scalar subqueries and derived tables that return exactly or at most one tuple |
US20050027690A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation | Dynamic selection of optimal grouping sequence at runtime for grouping sets, rollup and cube operations in SQL query processing |
US20050154725A1 (en) * | 2004-01-08 | 2005-07-14 | International Business Machines Corporation | Method applying transitive closure to group by and order by clauses |
US20060161515A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Apparatus and method for SQL distinct optimization in a computer database system |
WO2011065612A1 (ko) * | 2009-11-30 | 2011-06-03 | 한국과학기술정보연구원 | 파생 테이블을 이용하여 스파클 집계 함수 문법 확장시 유니온 구문의 처리방법 |
US20170031989A1 (en) * | 2015-07-31 | 2017-02-02 | International Business Machines Corporation | Outer join optimizations in database management systems |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN109947791A (zh) * | 2019-03-27 | 2019-06-28 | 上海达梦数据库有限公司 | 一种数据库语句优化方法、装置、设备及存储介质 |
CN110968593A (zh) * | 2019-12-10 | 2020-04-07 | 上海达梦数据库有限公司 | 数据库sql语句优化方法、装置、设备和存储介质 |
CN111309753A (zh) * | 2020-01-21 | 2020-06-19 | 上海达梦数据库有限公司 | 结构化查询语句的优化方法、装置、设备及存储介质 |
-
2020
- 2020-09-09 CN CN202010942505.5A patent/CN112100198B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6339770B1 (en) * | 1999-08-12 | 2002-01-15 | International Business Machines Corporation | Query simplification and optimization involving eliminating grouping column from group by operation corresponds to group by item that is constant |
US6826562B1 (en) * | 1999-11-29 | 2004-11-30 | International Business Machines Corporation | Method of simplifying and optimizing scalar subqueries and derived tables that return exactly or at most one tuple |
US6775681B1 (en) * | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of grouping sets by reduction to group-by clause, with or without a rollup operator, using temporary tables |
US20050027690A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation | Dynamic selection of optimal grouping sequence at runtime for grouping sets, rollup and cube operations in SQL query processing |
US20050154725A1 (en) * | 2004-01-08 | 2005-07-14 | International Business Machines Corporation | Method applying transitive closure to group by and order by clauses |
US20060161515A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Apparatus and method for SQL distinct optimization in a computer database system |
WO2011065612A1 (ko) * | 2009-11-30 | 2011-06-03 | 한국과학기술정보연구원 | 파생 테이블을 이용하여 스파클 집계 함수 문법 확장시 유니온 구문의 처리방법 |
US20170031989A1 (en) * | 2015-07-31 | 2017-02-02 | International Business Machines Corporation | Outer join optimizations in database management systems |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN109947791A (zh) * | 2019-03-27 | 2019-06-28 | 上海达梦数据库有限公司 | 一种数据库语句优化方法、装置、设备及存储介质 |
CN110968593A (zh) * | 2019-12-10 | 2020-04-07 | 上海达梦数据库有限公司 | 数据库sql语句优化方法、装置、设备和存储介质 |
CN111309753A (zh) * | 2020-01-21 | 2020-06-19 | 上海达梦数据库有限公司 | 结构化查询语句的优化方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
龚成鹏: "基于关系型数据库中SQL语句优化规则的研究 ————以Oracle为例", 中国优秀硕士学位论文全文数据库信息科技辑, pages 138 - 2861 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204568A (zh) * | 2021-05-26 | 2021-08-03 | 上海达梦数据库有限公司 | 一种结构化查询语句优化方法、装置、设备及存储介质 |
CN114969101A (zh) * | 2022-07-13 | 2022-08-30 | 北京奥星贝斯科技有限公司 | Sql语句的处理方法及装置 |
CN114969101B (zh) * | 2022-07-13 | 2022-10-21 | 北京奥星贝斯科技有限公司 | Sql语句的处理方法及装置 |
CN115168408A (zh) * | 2022-08-16 | 2022-10-11 | 北京永洪商智科技有限公司 | 基于强化学习的查询优化方法、装置、设备及存储介质 |
CN115168408B (zh) * | 2022-08-16 | 2024-05-28 | 北京永洪商智科技有限公司 | 基于强化学习的查询优化方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112100198B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10133778B2 (en) | Query optimization using join cardinality | |
CN112100198B (zh) | 数据库sql语句优化方法、装置、设备及存储介质 | |
US8965918B2 (en) | Decomposed query conditions | |
US8285707B2 (en) | Method of querying relational database management systems | |
US6434545B1 (en) | Graphical query analyzer | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
CN110968593B (zh) | 数据库sql语句优化方法、装置、设备和存储介质 | |
US20120158736A1 (en) | Virtual r-tree mapped to an extendible-hash based file system | |
EP3385864B1 (en) | Method and device for establishing index | |
CN110222071B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
US8046352B2 (en) | Expression replacement in virtual columns | |
CN111352950B (zh) | 数据库表等值连接的优化方法、装置、服务器及存储介质 | |
US20140379753A1 (en) | Ambiguous queries in configuration management databases | |
CN112765282A (zh) | 一种数据联机分析处理方法、装置、设备及存储介质 | |
US11074259B2 (en) | Optimize query based on unique attribute | |
CN113946600A (zh) | 数据查询方法、装置、计算机设备和介质 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN112732752A (zh) | 一种查询语句优化方法、装置、设备和存储介质 | |
US20060161515A1 (en) | Apparatus and method for SQL distinct optimization in a computer database system | |
CN111309753B (zh) | 结构化查询语句的优化方法、装置、设备及存储介质 | |
Ingalalli et al. | Querying RDF data using a multigraph-based approach | |
CN108549688B (zh) | 一种数据操作的优化方法、装置、设备和存储介质 | |
Cappellari et al. | A path-oriented rdf index for keyword search query processing | |
CN110990423B (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
KR101718119B1 (ko) | SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 |
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 |