CN110502532B - 远程数据库对象的优化方法、装置、设备和存储介质 - Google Patents
远程数据库对象的优化方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110502532B CN110502532B CN201910790968.1A CN201910790968A CN110502532B CN 110502532 B CN110502532 B CN 110502532B CN 201910790968 A CN201910790968 A CN 201910790968A CN 110502532 B CN110502532 B CN 110502532B
- Authority
- CN
- China
- Prior art keywords
- optimized
- remote database
- connection
- condition
- 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 54
- 238000005457 optimization Methods 0.000 claims abstract description 163
- 230000005540 biological transmission Effects 0.000 claims abstract description 55
- 238000001914 filtration Methods 0.000 claims description 137
- 230000014509 gene expression Effects 0.000 claims description 74
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 101001081555 Homo sapiens Plasma protease C1 inhibitor Proteins 0.000 description 2
- 102100027637 Plasma protease C1 inhibitor Human genes 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 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
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种远程数据库对象的优化方法、装置、设备和存储介质,该方法包括:确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型;若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。本发明实施例以单个远程数据库对象为优化单位的方式递归对SQL语句所有组成部分中的远程数据库对象进行优化,降低了远程数据库对象优化对待优化SQL语句的要求,增加了远程数据库对象的可优化场景。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种远程数据库对象的优化方法、装置、设备和存储介质。
背景技术
数据库链接(DataBase Link)简称为DBLINK,它记录了远程数据库的连接和路径信息,用于建立本地数据库与远程数据库的联系。通过DBLINK访问远程数据库时,如果远程数据网络传输量过于庞大,则会严重影响本地数据库中结构化查询语言(StructuredQuery Language,SQL)的执行效率。为此需要对本地数据库的执行过程进行优化,主要从以下两方面考虑:1)减少同一个远程数据库的访问次数;2)减少远程数据库返回到本地的数据量。
目前已有的远程数据库对象的优化方式包括:
1)如果原始SQL整体只涉及同一个远程数据库的对象,将整个SQL直接发送到指定远程数据库执行。
2)如果原始SQL的部分嵌套的子SQL(如:查询表达式、子查询、视图、派生表)只涉及同一个远程数据库的对象,则将这部分子SQL作为整体发送到指定远程数据库执行。远程数据返回到本地后,再与本地表运算,其中,每个被部分优化的子SQL可以指向不同的远程数据库。
3)如果远程数据量远远大于本地数据量,则通过添加提示(HINT)的方式将本地数据发送到远程数据库执行。
以上优化方式有效提高了DBLINK的执行效率,但是对于原始SQL的要求过高,一旦SQL或子SQL中同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象,则不能优化。其中,DBLINK优化方式3),还需要明确知道远程数据库对象和本地数据库对象的数据量才能加HINT,否则可能导致执行更慢。
发明内容
本发明提供一种远程数据库对象的优化方法、装置、设备和存储介质,以实现把优化对象的范围从整个语句或子语句缩小到单个远程数据库对象,以单个远程数据库对象为优化单位的优化方式对数据库链接进行优化,从而优化远程数据库节点的网络数据传输量。
第一方面,本发明实施例提供了一种远程数据库对象的优化方法,该方法包括:
确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
第二方面,本发明实施例还提供了一种远程数据库对象的优化装置,该装置包括:
类型确定模块,用于确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
第一优化模块,用于若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
第二优化模块,用于若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
第三方面,本发明实施例还提供了一种远程数据库对象的优化设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例第一方面所述的远程数据库对象的优化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例第一方面所述的远程数据库对象的优化方法。
本发明实施例通过确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,并按照不同对象查询类型对应的优化规则对当前待优化SQL语句包含的远程数据库对象进行优化,实现了把优化对象的范围从整个SQL语句或子SQL语句缩小到单个远程数据库对象,以单个远程数据库对象为优化单位的优化方式递归对SQL语句所有组成部分中的远程数据库对象进行优化,从而优化了远程数据库节点的网络数据传输量。由此解决了现有技术中待优化SQL语句在同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时无法进行优化的问题,降低了远程数据库对象优化对待优化SQL语句的要求,增加了远程数据库对象的可优化场景。
附图说明
图1是本发明实施例一提供的一种远程数据库对象的优化方法的流程示意图;
图2是本发明实施例二提供的一种远程数据库对象的优化方法的流程示意图;
图3是本发明实施例二提供的一种多个对象内连接查询优化方法的流程示意图;
图4是本发明实施例二提供的一种多个对象左外连接查询优化方法的流程示意图;
图5是本发明实施例二提供的一种多个对象右外连接查询优化方法的流程示意图;
图6为本发明实施例三提供的一种远程数据库对象的优化方法的流程示例图;
图7是本发明实施例四提供的一种远程数据库对象的优化装置的结构示意图;
图8是本发明实施例五提供的一种远程数据库对象的优化设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种远程数据库对象的优化方法的流程示意图,本实施例可适用于对待优化SQL语句同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时进行优化的情况,该方法可以由本发明实施例中的远程数据库对象的优化装置来执行,该装置可以由硬件和/或软件实现,并一般集成在远程数据库对象的优化设备上。
可以理解的是,现有技术中对DBLINK的优化方案,不适用于一个SQL或子SQL语句中同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象的情况,其主要原因在于现有技术方案是以整个SQL语句(或子SQL语句)为优化单位进行优化的,且对于通过添加提示(HINT)将本地数据发送到远程数据库执行的优化方式,还需要明确知道远程数据库对象和本地数据库对象的数据量才能加HINT,否则可能导致执行更慢。本发明实施例在于将优化单位缩小至单个远程数据库对象,由此,对于同时涉及远程数据库对象和本地数据库对象的整个SQL语句(或子SQL语句),或者同时涉及多个不同远程数据库的对象的整个SQL语句(或子SQL语句),都可针对整个SQL语句(或子SQL语句)以单个远程数据库对象为优化单位依次对每个远程数据库对象进行优化。
需要说明的是,用户可以通过DBLINK对远程数据库的表进行插入、删除、更新和查询操作,而本发明实施例所述的远程数据库对象的优化方法可用于对DBLINK中的SQL查询语句、查询插入语句以及基于查询的删除或更新语句中的查询子语句进行优化。DBLINK用于建立本地数据库与远程数据的联系,本发明实施例将本地数据库所在的数据库节点,即本地数据库节点作为本发明实施例的执行主体。
如图1所示,本实施例提供的远程数据库对象的优化方法具体包括如下步骤:
S101、确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型。
可以理解的是,若要以单个远程数据库对象为优化单位进行优化,则首先应需要确定当前待优化SQL语句中包含哪些远程数据库对象,且针对不同情形的远程数据库对象,例如根据SQL语句中包含远程数据库对象的个数,以及数据库对象之间的连接关系,可分为不同的数据库对象查询类型。
其中,所述当前待优化SQL语句为当前被确定为待优化的基于结构化查询语言编译的查询语句;可选地,所述当前待优化SQL语句为一个完整的SQL语句或子SQL语句。所述远程数据库对象可以指SQL语句(或子SQL语句)中指向远程数据库的数据库对象,其中数据库对象包括表、视图、同义词等,或者是指向其它远程数据库的对象。所述对象查询类型可以理解为按照SQL查询语句中的查询对象的数量以及查询对象之间的连接关系等进行分类得到的SQL查询类型;所述连接关系可以理解为SQL语句FROM项中含有多个数据库对象时,各数据库对象之间的内连接、外连接(又包括左外连接、右外连接和全外连接)等连接关系;可选地,所述查询类型可包括SQL语句的FROM项仅包含单个远程数据库对象的单个对象查询类型,以及SQL语句的FROM项包含两个及两个以上具有连接关系的数据库对象的多个对象连接查询类型,其中,所述两个及两个以上具有连接关系的数据库对象至少包含一个远程数据库对象;将所述单个对象查询类型记为第一对象查询,将所述多个对象连接查询类型记为第二对象查询。需要说明的是,对于第二对象查询(即多个对象连接查询类型),本发明实施例所述的优化方法只适用于内连接、左外连接、右外连接三种连接关系,而不适用于外连接中的全外连接。
具体地,本步骤可由本地数据库节点首先分析当前待优化SQL语句具体包含的远程数据库对象,然后根据当前待优化SQL语句中包含的远程数据库对象的个数以及数据库对象之间的连接关系确定出所述当前待优化SQL语句对应的对象查询类型。
S102、若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
可以理解的是,对无论是现有技术方案还是本发明实施例方案,对SQL语句的优化都是以减少本地数据库节点对同一个远程数据库的访问次数,以及减少远程数据库返回到本地数据库节点的数据量为出发点进行考虑的。对本发明实施例来说,以单个远程数据库对象为优化单位进行优化,主要考虑如何实现对远程数据库节点的网络数据传输量的优化。由于不同对象查询类型对应的远程数据库对象和/或数据库对象之间连接关系不同,故应针对每种对象查询类型设置相应的优化规则有针对性地进行优化。具体优化时可基于同一远程数据库对象对应的过滤条件、连接关系以及中间连接条件等进行优化,其中,所述过滤条件是指SQL语句中的WHERE过滤条件,所述中间连接条件是指SQL语句中的ON连接条件。
其中,所述第一优化规则为对应于所述第一对象查询的优化规则;可选地,对单个对象查询类型来说,所述第一优化规则可以为:若单个远程数据库对象对应的WHERE过滤条件为“AND”连接的布尔表达式,则将所述WHERE过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到一个单独对应于所述单个远程数据库对象的新的WHERE过滤条件;将该新的WHERE过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量。
S103、若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
其中,所述第二优化规则为对应于所述第二对象查询的优化规则;可选地,对多个对象连接查询类型来说,所述第二优化规则可以为:1)若当前待优化远程数据库对象对应的连接关系为内连接,且所述当前待优化远程数据库对象对应的WHERE过滤条件和/或ON连接条件为“AND”连接的布尔表达式,则将所述WHERE过滤条件和/或ON连接条件中只包含所述当前待优化远程数据库对象的布尔表达式移除并用“AND”连接,得到一个单独对应于所述当前待优化远程数据库对象的新的WHERE过滤条件;将该新的WHERE过滤条件与所述当前待优化远程数据库对象一起发送到所述当前待优化远程数据库对象对应的第二远程数据库节点执行,并接收所述第二远程数据库节点返回的远程数据,以优化所述第二远程数据库节点的网络数据传输量。2)若当前待优化远程数据库对象对应的连接关系为左外连接,则判断所述当前待优化远程数据库对象的第一分布位置;若所述第一分布位置为左外连接左侧,则将所述当前待优化远程数据库对象对应的WHERE过滤条件确定为第一待优化条件;若所述第一分布位置为左外连接右侧,则将所述当前待优化远程数据库对象对应的ON连接条件确定为第一待优化条件;若所述第一待优化条件为“AND”连接的布尔表达式,则将所述第一待优化条件中只包含所述当前待优化远程数据库对象的布尔表达式移除并用“AND”连接,得到一个单独对应于所述当前待优化远程数据库对象的新的WHERE过滤条件;将该新的WHERE过滤条件与所述当前待优化远程数据库对象一起发送到所述当前待优化远程数据库对象对应的第三远程数据库节点执行,并接收所述第三远程数据库节点返回的远程数据,以优化所述第三远程数据库节点的网络数据传输量。3)若当前待优化远程数据库对象对应的连接关系为右外连接,则判断所述当前待优化远程数据库对象的第二分布位置;若所述第二分布位置为右外连接左侧,则将所述当前待优化远程数据库对象对应的ON连接条件确定为第二待优化条件;若所述第二分布位置为右外连接右侧,则将所述当前待优化远程数据库对象对应的WHERE过滤条件确定为第二待优化条件;若所述第二待优化条件为“AND”连接的布尔表达式,则将所述第二待优化条件中只包含所述当前待优化远程数据库对象的布尔表达式移除并用“AND”连接,得到一个单独对应于所述当前待优化远程数据库对象的新的WHERE过滤条件;将该新的WHERE过滤条件与所述当前待优化远程数据库对象一起发送到所述当前待优化远程数据库对象对应的第四远程数据库节点执行,并接收所述第四远程数据库节点返回的远程数据,以优化所述第四远程数据库节点的网络数据传输量。
本发明实施例的技术方案,通过确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,并按照不同对象查询类型对应的优化规则对当前待优化SQL语句包含的远程数据库对象进行优化,实现了把优化对象的范围从整个SQL语句或子SQL语句缩小到单个远程数据库对象,以单个远程数据库对象为优化单位的优化方式递归对SQL语句所有组成部分中的远程数据库对象进行优化,从而优化了远程数据库节点的网络数据传输量。由此解决了现有技术中待优化SQL语句在同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时无法进行优化的问题,降低了远程数据库对象优化对待优化SQL语句的要求,增加了远程数据库对象的可优化场景。
进一步地,作为本实施例一的一个可选实施例,本实施例一将所述确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,具体优化为以下步骤S11~S19:
S11、对原始SQL语句进行语法解析,得到所述原始SQL语句的第一语法项和第二语法项。
其中,所述原始SQL语句为基于结构化查询语言编译的查询语句,所述第一语法项为所述原始SQL语句中第一个被执行的语法项,即SQL语句中的FROM项;所述第二语法项为所述原始SQL语句中除所述第一语法项以外的其他语法项,即SQL语句中除FROM项以外的其他语法项。
可以理解的是,一条SQL语句是由多个语法项组成的,一条SQL语句可包含的语法项分别为:SELECT项、FROM项、WHERE项、GROUP项、HAVING项、ORDERBY项等,而按照SQL语句的语义解析顺序,首先解析的是第一语法项FROM项,然后再解析第二语法项,因为第二语法项中的表达式会可能引用FROM项中的列。多个SQL语句可以进行集合操作,集合操作包括:并集UNION(ALL)、差集EXCEPT/MINUS,以及交集INTERSECT。一条SQL语句中被访问的各数据库对象被包含在第一语法项FROM项中,但子SQL可以被包含在所有语法项(第一语法项和第二语法项)中,子SQL的FROM项中也可能包含被访问的远程数据库对象,因此需要递归处理所有SQL(包含子SQL)。故应将所述原始SQL语句继续剥离到语法项的层别,再对所述原始SQL语句中包含的数据库对象进行确定。通常,通过对SQL语句进行语法解析的方式得到SQL语句的一个语法树,SQL语句的语法树包含存储各个语法项的语法块,对各个语法项的递归检查可通过递归访问各个语法块来实现。
S12、将原始SQL语句确定为候选待优化SQL语句,并将所述候选待优化SQL语句添加至待优化栈。
其中,所述候选待优化SQL语句是指候选作为当前待优化SQL语句的SQL语句。所述待优化栈是指临时存放候选待优化SQL语句的栈区,可选地,所述待优化栈满足“先进后出”原则。
S13、检查所述第一语法项和第二语法项包含的内容,获取所述候选待优化SQL语句对应的第一目标语法项和第二目标语法项。
其中,所述第一目标语法项为所述候选待优化SQL语句中第一个被执行的语法项,即SQL语句中的FROM项;所述第二目标语法项为所述候选待优化SQL语句中除所述第一目标语法项以外的其他语法项,即SQL语句中除FROM项以外的其他语法项。
S14、依次检查所述候选待优化SQL语句的第一目标语法项和第二目标语法项,若所述第一目标语法项或第二目标语法项中包含子SQL语句,则将所述子SQL语句确定为新的候选待优化SQL语句,并继续将所述候选待优化SQL语句添加至所述待优化栈,返回执行所述候选待优化SQL语句所对应目标语法项的获取操作,直至所述第一语法项和第二语法项包含的内容均被检查到。
其中,所述子SQL语句为基于结构化查询语言编译的查询语句,例如可以是查询表达式、子查询、派生表或视图,子SQL可以包含在候选待优化SQL的任一语法项中。
S15、顺序从所述待优化栈中选取候选待优化SQL语句作为当前待优化SQL语句。
可以理解的是,在对原始SQL语句进行解析获得所述第一语法项和第二语法项后,由于原始SQL语句的任一语法项中还可能存在子SQL语句,子SQL的各语法项中还可能存在另一个子SQL,因此,需要针对原始SQL语句的每个语法项,由外到内逐层检查,检查出该语法项所嵌套的所有子SQL语句,并将最内层的子SQL确定为该语法项中第一个被优化的当前待优化SQL语句;再由内到外逐层将各子SQL语句确定为新的当前待优化SQL语句。为此,针对原始SQL语句的每个语法项,可设置一个待优化栈,用于顺序存储对该语法项由外到内检查所得的SQL或子SQL语句,依次将所存储的SQL或子SQL语句确定为候选待优化SQL语句存入待优化栈中,等到将该语法项最内层的SQL或子SQL语句存入待优化栈时,依据待优化栈的“先进后出”原则,顺序将各候选待优化SQL语句确定为当前待优化SQL语句执行后续的优化操作。
需要说明的是,在对原始SQL进行语法解析时,若原始SQL包含子SQL,则所有子SQL也一起完成了语法解析。
S16、根据所述当前待优化SQL语句的第一目标语法项和第二目标语法项,确定所述当前待优化SQL语句中包含的第一数据库对象和第二数据库对象。
需要说明的是,子SQL语句可能出现在原始SQL的任一语法项中,虽然语义解析时必须先解析第一语法项FROM项,再解析第二语法项,因为第二语法项可能引用第一语法项中的列,但优化时语义解析已完成,故对子SQL的查找,可以按照任意顺序对当前SQL语句的各个语法项进行递归检查;而对远程数据库对象的确定是在确定当前待优化SQL语句之后,被访问的远程数据库对象在第一目标语法项FROM项中。
其中,所述第一数据库对象可以理解为所述当前待优化SQL语句的FROM项中包含的数据库对象,所述第二数据库对象可以理解为所述当前待优化SQL语句除FROM项以外的其他项中所包含的数据库对象。所述数据库对象可以是远程数据库对象,也可以是本地数据库对象。
可以理解的是,本发明实施例中当前待优化SQL语句的含义是从FROM项指定的数据库对象中找出满足条件的元组,因此将FROM项作为当前待优化SQL语句中第一个被语义解析的语法项。若一条当前待优化SQL语句的第一目标语法项FROM项中包含远程数据库对象,则该当前待优化SQL语句存在有待进一步确定是否具有相应优化条件的数据库对象,从而可以对所述远程数据库对象执行下一步优化操作步骤;否则,则认为无需对该当前待优化SQL语句再进行后续的优化操作步骤,转而检查该当前待优化SQL语句的第二目标语法项,如果当前待优化SQL的所有语法项检查完,则重新确定新的当前待优化SQL语句,如此循环,直至递归结束。
S17、若所述第一数据库对象为单个远程数据库对象,则确定所述对象查询类型为第一对象查询。
可以理解的是,所述第一数据库对象为单个远程数据库对象,即当前待优化SQL语句的FROM项中只包含一个远程数据库对象。此时,当前待优化SQL语句的FROM项符合单个对象查询类型的条件,故将所述对象查询类型确定为第一对象查询。
S18、若所述第一数据库对象包含两个或两个以上的数据库对象,且所述数据库对象中至少包含一个远程数据库对象,则确定所述对象查询类型为第二对象查询。
可以理解的是,所述第一数据库对象包含两个或两个以上的数据库对象,且所述数据库对象中至少包含一个远程数据库对象,即当前待优化SQL语句的FROM项中包含两个或两个以上的数据库对象,所述数据库对象全部为远程数据库对象,或者所述数据库对象为本地数据库对象和至少一个远程数据库对象。此时,当前待优化SQL语句的FROM项符合多个对象连接查询类型的条件,故将所述对象查询类型确定为第二对象查询。
S19、返回当前待优化SQL语句的选取操作,直至遍历所述待优化栈。
本可选实施例对本实施例一的中所述远程数据库对象以及对象查询类型的确定做了详细说明,为后续基于不同对象查询类型具体设置不同优化规则进行优化奠定了基础。
实施例二
图2是本发明实施例二提供的一种远程数据库对象的优化方法的流程示意图,本实施例在实施例一的基础上进一步优化。本实施例将所述按照第一优化规则对所述第一对象查询对应的数据库对象进行优化,以优化远程数据库节点的网络数据传输量,具体化为:从所述第二目标语法项中获取与所述单个远程数据库对象关联的第一过滤条件;若所述第一过滤条件为“与AND”连接的布尔表达式,则将所述第一过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到第二过滤条件;将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量。
本实施例还将所述按照第二优化规则对所述第二对象查询对应的数据库对象进行优化,以优化远程数据库节点的网络数据传输量,具体化为:依次确定各所述远程数据库对象为当前待优化对象;分析所述第一目标语法项,获取与所述当前待优化对象关联的连接关系和中间连接条件,所述连接关系包括内连接和外连接;分析所述第二目标语法项,获取与所述当前待优化对象关联的第三过滤条件;基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量。
如图2所示,本实施例提供的远程数据库对象的优化方法具体包括如下步骤:
S201、对原始SQL语句进行语法解析,得到所述原始SQL语句的第一语法项和第二语法项。
S202、将原始SQL语句确定为候选待优化SQL语句,并将所述候选待优化SQL语句添加至待优化栈。
S203、检查所述第一语法项和第二语法项包含的内容,获取所述候选待优化SQL语句对应的第一目标语法项和第二目标语法项。
S204、依次检查所述候选待优化SQL语句的第一目标语法项和第二目标语法项,若所述第一目标语法项或第二目标语法项中包含子SQL语句,则将所述子SQL语句确定为新的候选待优化SQL语句,并继续将所述候选待优化SQL语句添加至所述待优化栈,返回执行所述候选待优化SQL语句所对应目标语法项的获取操作,直至所述第一语法项和第二语法项包含的内容均被检查到。
S205、顺序从所述待优化栈中选取候选待优化SQL语句作为当前待优化SQL语句。
S206、根据所述当前待优化SQL语句的第一目标语法项和第二目标语法项,确定所述当前待优化SQL语句中包含的第一数据库对象和第二数据库对象。
S207、若所述第一数据库对象为单个远程数据库对象,则确定所述对象查询类型为第一对象查询。
S208、从所述第二目标语法项中获取与所述单个远程数据库对象关联的第一过滤条件。
可以理解的是,SQL语句中的WHERE过滤条件表示从FROM项指定的数据库对象中找出满足条件的元组,所述第一过滤条件即可理解为当前待优化SQL语句中与所述单个远程数据库对象关联的WHERE过滤条件。
S209、若所述第一过滤条件为“与AND”连接的布尔表达式,则将所述第一过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到第二过滤条件。
可以理解的是,本发明实施例在于以单个远程数据库对象为优化单位对整个SQL语句进行优化,以实现对本地数据库节点的本地执行任务量的优化。而在对单个远程数据库对象进行优化时,主要考虑对单个远程数据库对象对应的WHERE过滤条件和ON连接条件进行优化。对于第一对象查询来说,单个远程数据库对象不包含ON连接条件,故只针对WHERE过滤条件进行优化。而只有在所述单个远程数据库对象对应的WHERE过滤条件为“AND”连接的布尔表达式时,才能进行优化,具体可将WHERE过滤条件中所有只包含所述单个远程数据库对象的布尔表达式移除出来,并用“AND”连接组合成一个只包含所述单个远程数据库对象的新的布尔表达式,将此新的布尔表达式作为一个单独对应于所述单个远程数据库对象的新的WHERE过滤条件,即第二过滤条件。
S210、将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量。
其中,所述第一远程数据库节点为所述单个远程数据库对象对应关联的远程数据库节点。
可以理解的是,第二过滤条件是一个单独对应于所述单个远程数据库对象的新的WHERE过滤条件,将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,由于是先在远程数据库节点完成过滤后再返回数据到本地数据库节点,因此减少了本地数据库节点接收远程数据库返回的数据量,即实现了对远程数据库节点的网络数据传输量的优化。
S211、若所述第一数据库对象包含两个或两个以上的数据库对象,且所述数据库对象中至少包含一个远程数据库对象,则确定所述对象查询类型为第二对象查询。
S212、依次确定各所述远程数据库对象为当前待优化对象。
可以理解的是,当所述第一数据库对象包含两个或两个以上的数据库对象时,应依次将各所述远程数据库对象确定为当前待优化对象进行优化。
S213、分析所述第一目标语法项,获取与所述当前待优化对象关联的连接关系和中间连接条件。
可以理解的是,对于存在连接关系的多个数据库对象,所述连接关系(包括内连接和外连接)和中间连接条件(即ON连接条件)通常出现在SQL语句的FROM项(即所述第一目标语法项)中。因此,通过分析FROM项的组成成分,即可获取与所述当前待优化对象关联的连接关系和中间连接条件。其中,所述外连接又包括左外连接、右外连接和全外连接,本发明实施例所述的优化方法只适用于内连接、左外连接、右外连接三种连接关系,而不适用于全外连接。
S214、分析所述第二目标语法项,获取与所述当前待优化对象关联的第三过滤条件。
其中,所述第三过滤条件可理解为当前待优化SQL语句中与所述当前待优化对象关联的WHERE过滤条件。
S215、基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量。
可以理解的是,对于不同的连接关系,所述当前待优化对象对应的优化方式可能存在不同,需要根据所述当前待优化对象对应的具体连接关系、中间连接条件和第三过滤条件针对性地进行优化。
图3是本发明实施例二提供的一种多个对象内连接查询优化方法的流程示意图,如图3所示,该方法具体包括如下步骤S21~S22:
S21、若所述连接关系为内连接,且所述第三过滤条件和/或中间连接条件为“AND”连接的布尔表达式,则将所述第三过滤条件和/或中间连接条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第四过滤条件。
可以理解的是,对于第二对象查询来说,若所述连接关系为内连接,则所述当前待优化对象可能同时存在WHERE过滤条件和ON连接条件,故需要针对WHERE过滤条件和/或ON连接条件进行优化。同样,只有在所述当前待优化对象对应的WHERE过滤条件和/或ON连接条件为“AND”连接的布尔表达式时,才能进行优化,具体可将WHERE过滤条件和/或ON连接条件中所有只包含所述当前待优化对象的布尔表达式移除出来,并用“AND”连接组合成一个只包含所述当前待优化对象的新的布尔表达式,将此新的布尔表达式作为一个单独对应于所述当前待优化对象的新的WHERE过滤条件,即第四过滤条件。
S22、将所述第四过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第二远程数据库节点执行,并接收所述第二远程数据库节点返回的远程数据,以优化所述第二远程数据库节点的网络数据传输量。
其中,所述第二远程数据库节点是指连接关系为内连接时所述当前待优化对象对应关联的远程数据库节点。
需要说明的是,对于内连接,还可能存在SQL语句只包含WHERE过滤条件,而不包含ON连接条件的情况,此时,只针对当前待优化对象对应的WHERE过滤条件进行优化即可,优化方式可参照单个对象查询对应的优化方式;同理,还可能存在SQL语句只包含ON连接条件,而不包含WHERE过滤条件的情况,此时,只针对当前待优化对象对应的ON连接条件进行优化即可,优化方式可参照单个对象查询对应的优化方式。
图4是本发明实施例二提供的一种多个对象左外连接查询优化方法的流程示意图,如图4所示,该方法具体包括如下步骤S31~S33:
S31、若所述连接关系为外连接,且为左外连接,则判断所述当前待优化对象的第一分布位置,所述第一分布位置包括左外连接左侧和左外连接右侧。
可以理解的是,当所述连接关系左外连接时,需要判断当前待优化对象为所述左外连接的左连接对象还是右连接对象,具体可根据当前待优化对象的分布位置来确定。所述当前待优化对象位于所述左外连接左侧即为所述左外连接的左连接对象,所述当前待优化对象位于所述左外连接右侧即为所述左外连接的右连接对象。
S32、若所述第一分布位置为左外连接左侧,则将所述第三过滤条件确定为第一待优化条件;若所述第一分布位置为左外连接右侧,则将所述中间连接条件确定为第一待优化条件。
可以理解的是,对于左外连接,SQL语句在执行时左连接对象对应的元组是全返回的,而右连接对象对应的元组只返回满足ON连接条件的部分,不满足ON连接条件时则填空值NULL;WHERE过滤条件则是对所有返回的元组进行过滤。对左外连接中的WHERE过滤条件,左连接对象的WHERE过滤条件可以进行优化,而右连接对象的WHERE过滤条件不能进行优化,这是因为,对于左连接对象,WHERE过滤条件不管是下放作为左连接对象单个对象的过滤条件还是作为整个左外连接的过滤条件,最后返回的元组都是一样的(即优化前后等价),因此可以优化;然而,对于右连接对象,由于右连接对象的元组只返回满足ON连接条件的部分,不满足ON连接条件会被填空值NULL,此时,WHERE过滤条件是下放作为右连接对象单个对象的过滤条件(即只对右连接对象返回的元组进行过滤)还是作为整个左外连接的过滤条件(即对整个左外连接的返回元组进行过滤),其过滤对应右连接对象的元组是不一样的(不满足ON连接条件会被填空值NULL),返回的元组在某些特殊情况下可能不一样(即优化前后不等价),因此不能优化。对左外连接中的ON连接条件,右连接对象的ON连接条件可以进行优化,而左连接对象的ON连接条件不能进行优化,这是因为,对于左连接对象,ON连接条件作为整个左外连接的ON连接条件时,不管是否满足ON连接条件左连接对象对应的元组都要全部返回,而如果将ON连接条件下放作为左连接对象单个对象的过滤条件(即将ON连接条件作为左连接对象的WHERE过滤条件对左连接对象的返回元组进行过滤)则会导致部分元组无法返回(即优化前后不等价),因此不能优化;然而,对于右连接对象,ON连接条件不管是下放作为右连接对象单个对象的过滤条件还是作为整个左外连接的ON连接条件,最后都是返回满足ON连接条件的部分,并在不满足ON连接条件时填空值NULL,返回的元组是一样的(即优化前后等价),因此可以优化。
可以理解的是,对于第二对象查询来说,若所述连接关系为左外连接,则即使所述当前待优化对象同时存在WHERE过滤条件和ON连接条件,也只能单独对WHERE过滤条件或ON连接条件进行优化。
S33、若所述待优化条件为“AND”连接的布尔表达式,则将所述第一待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第五过滤条件。
具体地,可将第一待优化条件中所有只包含所述单个远程数据库当前待优化对象的布尔表达式移除出来,并用“AND”连接组合成一个只包含所述当前待优化对象的新的布尔表达式,将此新的布尔表达式作为一个单独对应于所述当前待优化对象的新的WHERE过滤条件,即第五过滤条件。
S34、将所述第五过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第三远程数据库节点执行,并接收所述第三远程数据库节点返回的远程数据,以优化所述第三远程数据库节点的网络数据传输量。
其中,所述第三远程数据库节点是指连接关系为左外连接时所述当前待优化对象对应关联的远程数据库节点。
图5是本发明实施例二提供的一种多个对象右外连接查询优化方法的流程示意图,如图5所示,该方法具体包括如下步骤S41~S43:
S41、若所述连接关系为外连接,且为右外连接,则判断所述当前待优化对象的第二分布位置,所述第二分布位置包括右外连接左侧和右外连接右侧。
可以理解的是,类似于左外连接,当所述连接关系右外连接时,需要判断当前待优化对象为所述右外连接的左连接对象还是右连接对象,具体可根据当前待优化对象的分布位置来确定。所述当前待优化对象位于所述右外连接左侧即为所述右外连接的左连接对象,所述当前待优化对象位于所述右外连接右侧即为所述右外连接的右连接对象。
S42、若所述第二分布位置为右外连接左侧,则将所述中间连接条件确定为第二待优化条件;若所述第二分布位置为右外连接右侧,则将所述第一过滤条件确定为第二待优化条件。
可以理解的是,不同于左外连接,对于右外连接,SQL语句在执行时右连接对象对应的元组是全返回的,而右连接对象对应的元组只返回满足ON连接条件的部分,不满足ON连接条件时则填空值NULL;WHERE过滤条件是对所有的返回元组进行过滤。对右外连接中的WHERE过滤条件,右连接对象的WHERE过滤条件可以进行优化,而左连接对象的WHERE过滤条件不能进行优化;对右外连接中的ON连接条件,左连接对象的ON连接条件可以进行优化,而右连接对象的ON连接条件不能进行优化。具体原由与左外连接类似,此处不再赘述。
可以理解的是,对于第二对象查询来说,当所述连接关系为右外连接时,类似于左外连接,即使所述当前待优化对象同时存在WHERE过滤条件和ON连接条件,也只能单独对WHERE过滤条件或ON连接条件进行优化。
S43、若所述待优化条件为“AND”连接的布尔表达式,则将所述第二待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第六过滤条件。
具体地,可将第二待优化条件中所有只包含所述单个远程数据库当前待优化对象的布尔表达式移除出来,并用“AND”连接组合成一个只包含所述当前待优化对象的新的布尔表达式,将此新的布尔表达式作为一个单独对应于所述当前待优化对象的新的WHERE过滤条件,即第六过滤条件。
S44、将所述第六过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第四远程数据库节点执行,并接收所述第四远程数据库节点返回的远程数据,以优化所述第四远程数据库节点的网络数据传输量。
其中,所述第四远程数据库节点是指连接关系为右外连接时所述当前待优化对象对应关联的远程数据库节点。
S216、返回当前待优化SQL语句的选取操作,直至遍历所述待优化栈。
进一步地,作为本实施例二的一个可选实施例,本实施例二还将所述对象查询类型优化包括了第三对象查询;
相应地,若所述第一数据库对象和第二数据库对象为同一个远程数据库对象,则确定所述对象查询类型为第三对象查询。
可以理解的是,对于第一对象查询(即单个对象查询类型),还存在一种特殊情形,即整个SQL语句的所有语法项中包含所有数据库对象(即包括第一数据库对象和第二数据库对象)均为同一个远程数据库对象,这种情形可看作第一对象查询的一个特例,将该特殊情形从第一对象查询中单列出来,记为第三对象查询。
可选地,若所述对象查询类型为第三对象查询,则将所述当前待优化SQL语句整体发送到所述同一个远程数据库对象对应的第五远程数据库节点执行,并接收所述第五远程数据库节点返回的远程数据,以优化所述第五远程数据库节点的网络数据传输量。
其中,所述第五远程数据库节点是指所述同一个远程数据库对象对应关联的远程数据库节点。
本发明实施例的技术方案,通过确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,并按照不同对象查询类型对应的优化规则对当前待优化SQL语句包含的远程数据库对象进行优化,实现了把优化对象的范围从整个SQL语句或子SQL语句缩小到单个远程数据库对象,以单个远程数据库对象为优化单位的优化方式递归对SQL语句所有组成部分中的远程数据库对象进行优化,从而优化了远程数据库节点的网络数据传输量。由此解决了现有技术中待优化SQL语句在同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时无法进行优化的问题,降低了远程数据库对象优化对待优化SQL语句的要求,增加了远程数据库对象的可优化场景。
实施例三
本实施例可适用于对待优化SQL语句同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时进行优化的情况,本实施例以创建实际的DBLINK,并执行SQL语句为例对前述实施例中的三种对象查询类型对应的优化方式进行说明。
本地创建DBLINK,通过ODBC连接名称为“DM8”的数据源,并指定登录用户名SYSDBA和口令SYSDBA:
CREATE LINK LNK01CONNECT'ODBC'WITH SYSDBA IDENTIFIED BY SYSDBA USING'DM8';
本地创建表对象T2:
CREATE TABLE T2(D1INT,D2INT);
有远程数据对象T1,T3:
CREATE TABLE T1(C1INT,C2INT);
CREATE TABLE T3(E1INT,E2INT)。
(1)第一对象查询——单个对象查询,即FROM项为单个数据库对象
对于单个对象查询,优化针对WHERE过滤条件进行。
如果是远程数据库对象,则检查WHERE过滤条件中是否存在只包含此对象的布尔表达式,如果有则可以优化。WHERE过滤条件中包含其它远程对象或者本地对象的,则不能优化;
如果是本地数据库对象,则不能优化。
例1:单个对象查询优化
SELECT*FROM T1@LNK01WHERE C1IN(SELECT D1FROM T2);WHERE过滤条件中包含了本地对象,则不能优化。
SELECT*FROM T1@LNK01WHERE C1IN(SELECT D1FROM T2)AND T1.C1>1;WHERE过滤条件中存在AND连接且只包含T1@LNK01的过滤条件“T1.C1>1”则可以优化。
(2)多个对象连接查询
对于多个对象的连接查询,优化针对WHERE过滤条件和ON连接条件进行。
1)内连接
递归检查连接查询中所涉及的各远程对象,如果WHERE过滤条件和ON连接条件中包含只有当前被检查远程对象的布尔表达式,则将此类布尔表达式从原始布尔表达式中移除,并用AND组合成新的布尔表达式,作为当前被检查远程对象的WHERE过滤条件。
例2:含ON连接条件的内连接优化
SELECT*FROM SYSDBA.T1@LNK01JOIN T2ON T1.C1>1AND T1.C1=T2.D1WHERET1.C1<3AND T1.C2=T2.D2;
检查远程对象SYSDBA.T1@LNK01,语句中ON连接条件中的“T1.C1>1”和WHERE过滤条件中的“T1.C1<3”都只包含当前被检查的远程对象,则将这两个布尔表达式移除,并用AND组合成新的布尔表达式“T1.C1>1AND T1.C1<3”,作为SYSDBA.T1@LNK01的WEHRE过滤条件。
优化前计划:
优化后计划:
优化后语句等价于:
SELECT*FROM(SELECT*FROM SYSDBA.T1@LNK01WHERE T1.C1>1AND T1.C1<3)T1JOIN T2ON T1.C1=T2.D1WHERE T1.C2=T2.D2;
改造后远程数据在远程过滤后再将过滤结果发送到本地,减少了需要通过网络传输的数据量,当过滤条件能过滤掉表中大部分数据时,本优化能大幅提升效率。
例3:不含ON连接条件的内连接优化
SELECT*FROM SYSDBA.T1@LNK01,T2,SYSDBA.T3@LNK01WHERE T1.C1=1AND T2.D1=T3.E1;
其中FROM项中T1和T3是LNK01对应远程数据库的对象,T2为本地对象,以单个远程数据库对象作为优化单位,具体操作步骤如下:
(1)取出FROM项中的第一个对象SYSDBA.T1@LNK01。
(2)收集只包含T1的过滤条件,其中“T1.C1=1”满足。
(3)“SYSDBA.T1@LNK01”可以优化为“(SELECT*FROM SYSDBA.T1@LNK01WHERET1.C1=1)T1”
整体语句被修改为:
SELECT*FROM(SELECT*FROM T1@LNK01WHERE T1.C1=1)T1,T2,T3@LNK01WHERET2.D1=T3.E1;
(4)取出FROM链表中的第二个对象T2,不是远程数据库对象,不能优化。
(5)取出FROM链表中的第三个对象SYSDBA.T3@LNK01。
(6)收集只包含T3的过滤条件,未找到则不能优化。其中T2.D1=T3.E1包含本地表对象T2。
优化前计划:
优化后计划:
通过对比发现:
改造前的计划对应8-9行,第9行:通过网络获取T1表的所有远程数据,第8行:本地过滤。
改造后的计划对应8行,T1表数据直接在远程过滤后再发送到本地。
改造后远程数据在远程过滤后再将过滤结果发送到本地,减少了需要通过网络传输的数据量,当过滤条件能过滤掉表中大部分数据时,本优化能大幅提升效率。
2)外连接
a.WHERE过滤条件优化
LEFT OUTER JOIN左连接对象数据全返回,左连接对象可以优化,右连接对象不能优化。如果右连接对象的WHERE过滤条件优化,可能导致结果错误。同理,RIGHT OUTER JOIN右连接对象数据全返回,右连接对象可以优化,左连接对象不能优化。具体优化方法同1)内连接中的方法。
例4:外连接WHERE过滤条件优化
INSERT INTO T1@LNK01VALUES(1,1);
INSERT INTO T1@LNK01VALUES(2,2);
INSERT INTO T2VALUES(2,2);
INSERT INTO T2VALUES(3,3);
SELECT*FROM T1@LNK01LEFT OUTER JOIN T2ON T1.C1=T2.D1WHERE T1.C1>2;
本SQL中T1@LNK01为LEFT OUTER JOIN的左连接对象,可以进行优化。
优化前计划:
优化后计划:
优化后语句等价于:
SELECT*FROM(SELECT*FROM T1@LNK01WHERE T1.C1>2)T1LEFT OUTER JOIN T2ONT1.C1=T2.D1
例5:右连接对象的WHERE过滤条件不能优化的例子
SELECT*FROM T2LEFT OUTER JOIN T1@LNK01ON T1.C1=T2.D1WHERE T1.C1ISNULL;
--返回结果:
3 3NULL NULL
SELECT*FROM T2LEFT OUTER JOIN(SELECT*FROM T1@LNK01WHERE T1.C1IS NULL)T1ON T1.C1=T2.D1;
--返回结果为:
因为LEFT OUTER JOIN左连接对象数据全返回,右连接对象的WHERE过滤条件优化不等价。
b.ON连接条件优化
LEFT OUTER JOIN左连接对象数据全返回,右连接对象可以优化,左连接对象不能优化。如果左连接对象的ON连接条件优化,可能导致结果错误。同理,RIGHT OUTER JOIN右连接对象数据全返回,左连接对象可以优化,右连接对象不能优化。具体优化方法同1)内连接中的方法。
例6:外连接ON连接条件优化
SELECT*FROM T2LEFT OUTER JOIN T1@LNK01ON T1.C1>2;
优化前计划:
优化后计划:
优化后语句等价于:
SELECT*FROM T2LEFT OUTER JOIN(SELECT*FROM T1@LNK01WHERE T1.C1>2)T1ONTRUE;
例7:左连接对象的ON连接条件不能优化的例子
SELECT*FROM T1@LNK01LEFT OUTER JOIN T2ON T1.C1>1;
--返回结果:
SELECT*FROM(SELECT*FROM T1@LNK01WHERE T1.C1>1)T1LEFT OUTER JOIN T2ONTRUE;
--返回结果:
多个对象连接查询时,单个远程对象可优化范围见下表所示:
表1多个对象连接查询情况下单个远程数据库对象的可优化范围表
其中,“×”表示单个远程对象的相应部分不能优化,否则可能会导致结果错误。
图6为本发明实施例三提供的一种远程数据库对象的优化方法的流程示例图,如图6所示,本实施例的远程数据库对象的优化方法步骤如下:
S301、将原始SQL语句作为当前SQL。
S302、检查当前SQL是否能够整体优化,即检查当前SQL是否只包含同一个远程数据库的对象。如果满足,则直接将当前SQL整体发送到远程数据库节点执行,本地数据库节点只负责接收数据库节点返回的远程数据,优化结束;否则,执行S303。
S303、递归检查当前SQL的各语法项(包括:查询项、FROM项、WHERE项、GROUP BY项、HAVING项、ORDER BY项、层次查询条件等),如果包含子SQL(包括:查询表达式、子查询、派生表、视图)则将该子SQL作为当前SQL,转S302,否则转S304。
S304、递归检查FROM项的远程对象,依次对单个远程数据库对象进行优化。
本发明实施例的技术方案,通过确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,并按照不同对象查询类型对应的优化规则对当前待优化SQL语句包含的远程数据库对象进行优化,实现了把优化对象的范围从整个SQL语句或子SQL语句缩小到单个远程数据库对象,以单个远程数据库对象为优化单位的优化方式递归对SQL语句所有组成部分中的远程数据库对象进行优化,从而优化了远程数据库节点的网络数据传输量。由此解决了现有技术中待优化SQL语句在同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时无法进行优化的问题,降低了远程数据库对象优化对待优化SQL语句的要求,增加了远程数据库对象的可优化场景。
实施例四
图7为本发明实施例四提供的一种远程数据库对象的优化装置的结构示意图,本实施例可适用于对待优化SQL语句同时涉及远程数据库对象和本地数据库对象,或者同时涉及多个不同远程数据库的对象时进行优化的情况,该远程数据库对象的优化装置可以由软件和/或硬件实现,具体包括:类型确定模块401、第一优化模块402、第二优化模块403。其中,
类型确定模块401,用于确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
第一优化模块402,用于若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
第二优化模块403,用于若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
在上述各实施例的基础上,所述类型确定模块401,包括:
语法解析单元,用于对原始SQL语句进行语法解析,得到所述原始SQL语句的第一语法项和第二语法项,其中,所述原始SQL语句为基于结构化查询语言编译的查询语句,所述第一语法项为所述原始SQL语句中第一个被执行的语法项,所述第二语法项为所述原始SQL语句中除所述第一语法项以外的其他语法项;
候选确定单元,用于将原始SQL语句确定为候选待优化SQL语句,并将所述候选待优化SQL语句添加至待优化栈;
目标获取单元,用于检查所述第一语法项和第二语法项包含的内容,获取所述候选待优化SQL语句对应的第一目标语法项和第二目标语法项,其中,所述第一目标语法项为所述候选待优化SQL语句中第一个被执行的语法项,所述第二目标语法项为所述候选待优化SQL语句中除所述第一目标语法项以外的其他语法项;
候选更新单元,用于依次检查所述候选待优化SQL语句的第一目标语法项和第二目标语法项,若所述第一目标语法项或第二目标语法项中包含子SQL语句,则将所述子SQL语句确定为新的候选待优化SQL语句,并继续将所述候选待优化SQL语句添加至所述待优化栈,返回执行所述候选待优化SQL语句所对应目标语法项的获取操作,直至所述第一语法项和第二语法项包含的内容均被检查到,其中,所述子SQL语句为基于结构化查询语言编译的查询语句;、
当前待优化单元,用于顺序从所述待优化栈中选取候选待优化SQL语句作为当前待优化SQL语句;
对象确定单元,用于根据所述当前待优化SQL语句的第一目标语法项和第二目标语法项,确定所述当前待优化SQL语句中包含的第一数据库对象和第二数据库对象;
第一查询确定单元,用于若所述第一数据库对象为单个远程数据库对象,则确定所述对象查询类型为第一对象查询;
第二查询确定单元,用于若所述第一数据库对象包含两个或两个以上的数据库对象,且所述数据库对象中至少包含一个远程数据库对象,则确定所述对象查询类型为第二对象查询。
在上述各实施例的基础上,所述第一优化模块402,包括:
第一获取单元,用于从所述第二目标语法项中获取与所述单个远程数据库对象关联的第一过滤条件;
第二获取单元,用于若所述第一过滤条件为“与AND”连接的布尔表达式,则将所述第一过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到第二过滤条件;
第一优化单元,用于将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量。
在上述各实施例的基础上,所述第二优化模块403,包括:
优化确定单元,用于依次确定各所述远程数据库对象为当前待优化对象;
第一分析单元,用于分析所述第一目标语法项,获取与所述当前待优化对象关联的连接关系和中间连接条件,所述连接关系包括内连接和外连接;
第二分析单元,用于分析所述第二目标语法项,获取与所述当前待优化对象关联的第三过滤条件;
第二优化单元,用于根据所述连接关系、中间连接条件和第三过滤条件,对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量。
在上述各实施例的基础上,所述第二优化单元,包括:
第一组合子单元,用于若所述连接关系为内连接,且所述第三过滤条件和/或中间连接条件为“AND”连接的布尔表达式,则将所述第三过滤条件和/或中间连接条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第四过滤条件;
第一发送子单元,用于将所述第四过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第二远程数据库节点执行,并接收所述第二远程数据库节点返回的远程数据,以优化所述第二远程数据库节点的网络数据传输量。
在上述各实施例的基础上,所述第二优化单元,包括:
左外分布子单元,用于若所述连接关系为外连接,且为左外连接,则判断所述当前待优化对象的第一分布位置,所述第一分布位置包括左外连接左侧和左外连接右侧;
第一确定子单元,用于若所述第一分布位置为左外连接左侧,则将所述第一过滤条件确定为第一待优化条件;若所述第一分布位置为左外连接右侧,则将所述中间连接条件确定为第一待优化条件;
第二组合子单元,用于若所述第一待优化条件为“AND”连接的布尔表达式,则将所述第一待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第五过滤条件;
第二发送子单元,用于将所述第五过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第三远程数据库节点执行,并接收所述第三远程数据库节点返回的远程数据,以优化所述第三远程数据库节点的网络数据传输量。
在上述各实施例的基础上,所述第二优化单元,包括:
右外分布子单元,用于若所述连接关系为外连接,且为右外连接,则判断所述当前待优化对象的第二分布位置,所述第二分布位置包括右外连接左侧和右外连接右侧;
第二确定子单元,用于若所述第二分布位置为右外连接左侧,则将所述中间连接条件确定为第二待优化条件;若所述第二分布位置为右外连接右侧,则将所述第一过滤条件确定为第二待优化条件;
第三组合子单元,用于若所述待优化条件为“AND”连接的布尔表达式,则将所述待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第六过滤条件;
第三发送子单元,用于将所述第六过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第四远程数据库节点执行,并接收所述第四远程数据库节点返回的远程数据,以优化所述第四远程数据库节点的网络数据传输量。
可选地,在上述各实施例的基础上,所述对象查询类型还包括第三对象查询;
相应地,所述类型确定模块401还包括:
第三查询确定单元,用于若所述第一数据库对象和第二数据库对象为同一个远程数据库对象,则确定所述对象查询类型为第三对象查询;
所述远程数据库对象的优化装置,还包括:
第三优化模块,用于若所述对象查询类型为第三对象查询,则将所述当前待优化SQL语句整体发送到所述同一个远程数据库对象对应的第五远程数据库节点执行,并接收所述第五远程数据库节点返回的远程数据,以优化所述第五远程数据库节点的网络数据传输量。
本发明实施例所提供的远程数据库对象的优化装置可执行本发明任一实施例所提供的远程数据库对象的优化方法,具备执行方法相应的功能模块和有益效果。
实施例五
图8为本发明实施例五提供的一种远程数据库对象的优化设备的结构示意图,如图8所示,该远程数据库对象的优化设备包括处理器50、存储器51、输入装置52和输出装置53;该设备中处理器50的数量可以是一个或多个,图8中以一个处理器50为例;该设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的远程数据库对象的优化方法对应的程序指令/模块(例如,远程数据库对象的优化装置中的类型确定模块401、第一优化模块402、第二优化模块403)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行该远程数据库对象的优化设备的各种功能应用以及数据处理,即实现上述的远程数据库对象的优化方法。
存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至该远程数据库对象的优化设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置52可用于接收输入的数字或字符信息,以及产生与该远程数据库对象的优化设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种远程数据库对象的优化方法,该方法包括:
确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任一实施例所提供的远程数据库对象的优化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述远程数据库对象的优化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种远程数据库对象的优化方法,应用于多个不同数据库对象场景下,其特征在于,包括:
确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
其中,所述多个不同数据库对象包括远程数据库对象和本地数据库对象,或者,多个不同远程数据库对象,所述第一对象查询包括单个对象查询类型,所述第二对象查询包括多个对象连接查询类型;
所述按照第一优化规则对所述第一对象查询对应的数据库对象进行优化,以优化远程数据库节点的网络数据传输量,包括:
从第二目标语法项中获取与单个远程数据库对象关联的第一过滤条件;
若所述第一过滤条件为“与AND”连接的布尔表达式,则将所述第一过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到第二过滤条件;
将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量;
所述按照第二优化规则对所述第二对象查询对应的数据库对象进行优化,以优化远程数据库节点的网络数据传输量,包括:
依次确定各所述远程数据库对象为当前待优化对象;
分析第一目标语法项,获取与所述当前待优化对象关联的连接关系和中间连接条件,所述连接关系包括内连接和外连接;
分析所述第二目标语法项,获取与所述当前待优化对象关联的第三过滤条件;
其中,所述第一目标语法项为候选待优化SQL语句中第一个被执行的语法项,所述第二目标语法项为候选待优化SQL语句中除所述第一目标语法项以外的其他语法项,所述外连接包括左外连接和右外连接;
基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量;
其中,所述第三过滤条件为当前待优化SQL语句与所述当前待优化对象关联的WHERE过滤条件。
2.根据权利要求1所述的方法,其特征在于,所述确定当前待优化SQL语句包含的远程数据库对象及对应的对象查询类型,包括:
对原始SQL语句进行语法解析,得到所述原始SQL语句的第一语法项和第二语法项,其中,所述原始SQL语句为基于结构化查询语言编译的查询语句,所述第一语法项为所述原始SQL语句中第一个被执行的语法项,所述第二语法项为所述原始SQL语句中除所述第一语法项以外的其他语法项;
将原始SQL语句确定为候选待优化SQL语句,并将所述候选待优化SQL语句添加至待优化栈;
检查所述第一语法项和第二语法项包含的内容,获取所述候选待优化SQL语句对应的第一目标语法项和第二目标语法项;
依次检查所述候选待优化SQL语句的第一目标语法项和第二目标语法项,若所述第一目标语法项或第二目标语法项中包含子SQL语句,则将所述子SQL语句确定为新的候选待优化SQL语句,并继续将所述新的候选待优化SQL语句添加至所述待优化栈,返回执行所述候选待优化SQL语句所对应目标语法项的获取操作,直至所述第一语法项和第二语法项包含的内容均被检查到,其中,所述子SQL语句为基于结构化查询语言编译的查询语句;
顺序从所述待优化栈中选取候选待优化SQL语句作为当前待优化SQL语句;
根据所述当前待优化SQL语句的第一目标语法项和第二目标语法项,确定所述当前待优化SQL语句中包含的第一数据库对象和第二数据库对象;
若所述第一数据库对象为单个远程数据库对象,则确定所述对象查询类型为第一对象查询;
若所述第一数据库对象包含两个或两个以上的数据库对象,且所述数据库对象中至少包含一个远程数据库对象,则确定所述对象查询类型为第二对象查询;
返回当前待优化SQL语句的选取操作,直至遍历所述待优化栈。
3.根据权利要求1所述的方法,其特征在于,所述基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量,包括:
若所述连接关系为内连接,且所述第三过滤条件和/或中间连接条件为“AND”连接的布尔表达式,则将所述第三过滤条件和/或中间连接条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第四过滤条件;
将所述第四过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第二远程数据库节点执行,并接收所述第二远程数据库节点返回的远程数据,以优化所述第二远程数据库节点的网络数据传输量。
4.根据权利要求1所述的方法,其特征在于,所述基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量,包括:
若所述连接关系为外连接,且为左外连接,则判断所述当前待优化对象的第一分布位置,所述第一分布位置包括左外连接左侧和左外连接右侧;
若所述第一分布位置为左外连接左侧,则将所述第三过滤条件确定为第一待优化条件;若所述第一分布位置为左外连接右侧,则将所述中间连接条件确定为第一待优化条件;
若所述第一待优化条件为“AND”连接的布尔表达式,则将所述第一待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第五过滤条件;
将所述第五过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第三远程数据库节点执行,并接收所述第三远程数据库节点返回的远程数据,以优化所述第三远程数据库节点的网络数据传输量。
5.根据权利要求1所述的方法,其特征在于,所述基于所述连接关系、中间连接条件和第三过滤条件,按照第二优化规则对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量,包括:
若所述连接关系为外连接,且为右外连接,则判断所述当前待优化对象的第二分布位置,所述第二分布位置包括右外连接左侧和右外连接右侧;
若所述第二分布位置为右外连接左侧,则将所述中间连接条件确定为第二待优化条件;
若所述第二分布位置为右外连接右侧,则将所述第一过滤条件确定为第二待优化条件;
若所述第二待优化条件为“AND”连接的布尔表达式,则将所述第二待优化条件中只包含所述当前待优化对象的布尔表达式移除并用“AND”连接,得到第六过滤条件;
将所述第六过滤条件与所述当前待优化对象一起发送到所述当前待优化对象对应的第四远程数据库节点执行,并接收所述第四远程数据库节点返回的远程数据,以优化所述第四远程数据库节点的网络数据传输量。
6.一种远程数据库对象的优化装置,应用于多个不同数据库对象场景下,其特征在于,包括:
类型确定模块,用于确定当前待优化结构化查询语言SQL语句包含的远程数据库对象及对应的对象查询类型,所述对象查询类型包括第一对象查询和第二对象查询;
第一优化模块,用于若所述对象查询类型为第一对象查询,则按照第一优化规则对所述第一对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量;
第二优化模块,用于若所述对象查询类型为第二对象查询,则按照第二优化规则对所述第二对象查询对应的远程数据库对象进行优化,以优化远程数据库节点的网络数据传输量,所述第二优化规则为对应于所述第二对象查询的优化规则;
其中,所述多个不同数据库对象包括远程数据库对象和本地数据库对象,或者,多个不同远程数据库对象,所述第一对象查询包括单个对象查询类型,所述第二对象查询包括多个对象连接查询类型;
所述第一优化模块包括:第一获取单元,用于从第二目标语法项中获取与单个远程数据库对象关联的第一过滤条件;第二获取单元,用于若所述第一过滤条件为“与AND”连接的布尔表达式,则将所述第一过滤条件中只包含所述单个远程数据库对象的布尔表达式移除并用“AND”连接,得到第二过滤条件;第一优化单元,用于将所述第二过滤条件与所述单个远程数据库对象一起发送到所述单个远程数据库对象对应的第一远程数据库节点执行,并接收所述第一远程数据库节点返回的远程数据,以优化所述第一远程数据库节点的网络数据传输量;
所述第二优化模块包括:优化确定单元,用于依次确定各所述远程数据库对象为当前待优化对象;第一分析单元,用于分析第一目标语法项,获取与所述当前待优化对象关联的连接关系和中间连接条件,所述连接关系包括内连接和外连接,所述外连接包括左外连接和右外连接;第二分析单元,用于分析所述第二目标语法项,获取与所述当前待优化对象关联的第三过滤条件;第二优化单元,用于根据所述连接关系、中间连接条件和第三过滤条件,对所述当前待优化对象进行优化,以优化远程数据库节点的网络数据传输量;
其中,所述第一目标语法项为候选待优化SQL语句中第一个被执行的语法项,所述第二目标语法项为候选待优化SQL语句中除所述第一目标语法项以外的其他语法项;
所述第三过滤条件为当前待优化SQL语句与所述当前待优化对象关联的WHERE过滤条件。
7.一种远程数据库对象的优化设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5任一项所述的远程数据库对象的优化方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的远程数据库对象的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790968.1A CN110502532B (zh) | 2019-08-26 | 2019-08-26 | 远程数据库对象的优化方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790968.1A CN110502532B (zh) | 2019-08-26 | 2019-08-26 | 远程数据库对象的优化方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502532A CN110502532A (zh) | 2019-11-26 |
CN110502532B true CN110502532B (zh) | 2021-06-01 |
Family
ID=68589556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910790968.1A Active CN110502532B (zh) | 2019-08-26 | 2019-08-26 | 远程数据库对象的优化方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502532B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046066B (zh) * | 2019-12-09 | 2023-05-12 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN111026782B (zh) * | 2019-12-25 | 2024-02-06 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN112163025B (zh) * | 2020-09-18 | 2024-09-10 | 中国建设银行股份有限公司 | 数据库数据导出方法、装置、计算机设备及存储介质 |
CN113760988A (zh) * | 2021-02-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种无界流数据关联处理方法、装置、设备及存储介质 |
CN116483483B (zh) * | 2023-06-21 | 2023-09-19 | 中科方德软件有限公司 | 数据查询方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346617B2 (en) * | 2004-01-23 | 2008-03-18 | Oracle International Corporation | Multi-table access control |
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
CN104765731B (zh) * | 2014-01-02 | 2018-05-18 | 国际商业机器公司 | 数据库查询优化方法和设备 |
CN105701128B (zh) * | 2014-11-28 | 2019-03-08 | 华为技术有限公司 | 一种查询语句的优化方法和装置 |
-
2019
- 2019-08-26 CN CN201910790968.1A patent/CN110502532B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110502532A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502532B (zh) | 远程数据库对象的优化方法、装置、设备和存储介质 | |
US10659467B1 (en) | Distributed storage and distributed processing query statement reconstruction in accordance with a policy | |
US10133778B2 (en) | Query optimization using join cardinality | |
Simitsis et al. | Optimizing ETL processes in data warehouses | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
US10133776B2 (en) | Transforming a query by eliminating a subquery | |
CN110515973B (zh) | 一种数据查询的优化方法、装置、设备及存储介质 | |
US9934289B2 (en) | Fuzzy full text search | |
WO2021259217A1 (zh) | 数据的关联查询方法、装置、设备及存储介质 | |
US20180150544A1 (en) | Synchronized updates across multiple database partitions | |
US7945560B2 (en) | Technique for removing subquery in group by—having clauses using window functions | |
CN112199390B (zh) | 一种数据库中数据查询方法、装置、设备及存储介质 | |
CN110019314A (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN112732752A (zh) | 一种查询语句优化方法、装置、设备和存储介质 | |
CN111309753B (zh) | 结构化查询语句的优化方法、装置、设备及存储介质 | |
WO2021259367A1 (zh) | 统一sql的方法、系统、设备及介质 | |
US8150865B2 (en) | Techniques for coalescing subqueries | |
CN111046066B (zh) | 远程数据库对象的优化方法、装置、设备及存储介质 | |
CN111488360B (zh) | 一种行级安全的实现方法、装置、设备及存储介质 | |
CN114490724A (zh) | 处理数据库查询语句的方法和装置 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN110413642B (zh) | 一种应用无感知的分片数据库解析及优化方法 | |
CN114356966B (zh) | 数据库语句的处理方法及装置 | |
CN117216091A (zh) | 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 | |
CN116501762A (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 |