CN104216891B - 关系型数据库中的查询语句的优化方法和设备 - Google Patents
关系型数据库中的查询语句的优化方法和设备 Download PDFInfo
- Publication number
- CN104216891B CN104216891B CN201310210410.4A CN201310210410A CN104216891B CN 104216891 B CN104216891 B CN 104216891B CN 201310210410 A CN201310210410 A CN 201310210410A CN 104216891 B CN104216891 B CN 104216891B
- Authority
- CN
- China
- Prior art keywords
- predicate
- complicated
- filterability
- predetermined level
- conjunction
- 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.)
- Expired - Fee Related
Links
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/24535—Query rewriting; Transformation of sub-queries or views
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于关系型数据库中的查询语句的优化方法和设备。所述方法包括:对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。通过所述方法和设备,可以缩短数据查询所需的响应时间,提高查询的执行效率。
Description
技术领域
本发明涉及关系型数据库领域,更具体地,涉及一种关系型数据库中的查询语句的优化方法和设备。
背景技术
现今,主流的关系型数据库系统提供了关系数据服务(RDS)。RDS处理过程对数据库查询语句(以下简称查询语句)进行解析(parse),并根据解析进行查询语句语义变换(QST)。在此过程中,还对查询语句进行重写(rewrite)。然后,RDS处理过程根据QST处理的查询进行访问路径选择(即,APS估算),并生成访问路径描述语言(Access SpecificLanguage),以供执行结构产生器来生成执行结构。数据库引擎(或其执行模块)将根据该执行结构执行该查询以获得查询结果。
如何选取最优的访问路径来执行查询一直是数据库查询优化领域的一个重要研究课题。查询重写是选取最优的访问路径的重要组成部分。在查询重写期间,RDS处理将查询语句转换为执行起来更有效的形式。现有技术中提供了一些针对简单谓词查询的查询重写技术,例如谓词再分布技术、谓词顺序重新排序等。在本领域中,通常将顺序包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的谓词称作简单谓词;而将其他类谓词称作复杂谓词,例如,复杂谓词可以包含变量、函数、表达式、分句等等。在数据库语言中,所述关系运算符或逻辑运算符可以包括“=”、“>”、“>=”、“<”、“<=”、“NOT”、“IN”、“LIKE”、“BETWEEN”等。
在上述针对简单谓词查询的谓词顺序重新排序技术中,通常基于数据库统计信息估算简单谓词的过滤因子,并将过滤性强的谓词尽早地应用于查询,以便提高查询效率。然而,数据库统计信息往往是粗略概要的、并且不能实时准确地反映数据信息,因此基于此计算出的简单谓词的过滤因子通常不够准确,导致由此确定的谓词排列顺序也不是最优的。另一方面,由于复杂谓词并非由数据管理器(DM)来处理,而是在关系数据服务器上执行,因此无法根据数据库统计信息预先估算复杂谓词的过滤因子,从而上述谓词顺序重新排序技术不适用于复杂谓词。
发明内容
鉴于以上问题而提出了本发明。本发明的目的是提供一种用于关系型数据库中的查询语句的优化方法和设备,其能够缩短数据查询所需的响应时间,提高查询的执行效率,而且所述优化方法和设备可以应用于复杂谓词,从而扩大了查询重写技术的适用范围。
根据本发明的一个方面,提供了一种用于关系型数据库中的查询语句的优化方法,包括:对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
根据本发明的另一个方面,提供了一种用于关系型数据库中的查询语句的优化设备,包括:过滤性确定装置,被配置为对于查询语句中一预定层级的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及重新排序装置,被配置为基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
根据本发明上述方面的方法和设备可以通过使用单个复杂谓词对要实际查询的数据记录进行查询,来精确地确定各个复杂谓词的过滤性。通过基于该精确地确定的过滤性对谓词进行重新排序,可以获得高效的执行效率。另外,根据本发明上述方面的优化方法和设备可以应用于同时包含简单谓词和复杂谓词的查询,因此具有较大的适用范围。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2示出了根据本发明实施例的关系型数据库中的查询语句的优化方法的流程图。
图3示出了根据本发明实施例的关系型数据库中的复杂谓词的重新排序过程的流程图。
图4示出了应用根据本发明第一实施例的优化方法对复杂谓词进行重新排序过程的示例情形。
图5是示出了应用根据本发明第二实施例的优化方法对复杂谓词进行重新排序过程的示例情形。
图6例示了根据本发明实施例的关系型数据库中的查询语句的优化设备的结构的框图。
图7例示了根据本发明实施例的关系型数据库中的查询语句的优化设备中的过滤性确定装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、设备或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、设备或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、设备或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理设备执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的设备。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令设备(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理设备、或其它设备上,使得在计算机、其它可编程数据处理设备或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程设备上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[第一实施例]
现在参看图2,其示出了根据本发明实施例的关系型数据库中的查询语句的优化方法。
如图2所示,在步骤S21中,对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性。
首先对本实施例所涉及的技术术语进行简单的说明。
以结构化查询语言为例,谓词位于查询语句中的“Where”指令之后,其用于构造条件,以过滤出全部数据记录中满足这些条件的记录。如上文所述,在本领域中,通常将顺序包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的谓词称作简单谓词。简单谓词的例子可以包括但不限制于:COL op value,COL ISNULL,COL IS NOT NULL,COL BETWEEN value1AND value2,COL<>value,COL NOT BETWEENvalue1 AND value2等等,其中,op表示“=”、“>”、“>=”、“<”、“<=”,value、value1、value2为常量。简单谓词也称为一阶(Stage1)谓词,其在查询语句运行时,由关系型数据库管理系统(RDBMS)中的数据管理器(DM)执行。除简单谓词外的其他类谓词称作复杂谓词,例如COL1opCOL2+value,T1.COL1op T2.COL2等等。复杂谓词也称为二阶(Stage2)谓词,其在查询语句运行时,由RDBMS中关系数据服务器来执行。
谓词的过滤性用来反映谓词过滤出复合条件的记录的能力,其可以通过各种适当的参数、变量来表示。例如,过滤因子是一种常用的过滤性表示参数。谓词的过滤因子是介于0和1之间的数字,用于估计谓词为真的记录占全部数据记录的比例。如前文中所提到的,在现有技术中,简单谓词的过滤因子通常是基于粗略、概要的数据库统计信息估算出来的,因此往往不够准确。
下面将以一个具体的谓词表达式为例,对该步骤中的处理进行详细描述。
例如,假设示意性的查询语句为:
SELECT*
FROM T1
WHERE P1AND(P2OR(P3AND P4OR P5)),
其中,P1,P2,P3,P4和P5均为复杂谓词。 ……(1)
根据查询语句执行顺序的规则,分析该谓词表达式可知,P3和P4是最高层级(第4层级)的谓词,即,在执行所述查询语句时,最先执行的谓词;P5是第3层级的谓词,即在执行完P3和P4后执行的谓词;P2和P1分别是第2层级和第1层级的谓词。下面以预定层级是最高层级为例,对步骤21中的处理进行描述。
首先,确定仅使用谓词P3和仅使用谓词P4进行数据记录查询时,查询到的数据记录的序号。
从表达式(1)可知,查询语句将针对表T1中的数据记录进行查询。为了便于说明,假设表T1中仅存在8条数据记录。即,不使用任何谓词进行数据记录查询时(SELECT*FROMT1)将查询到从记录1到记录8共8条记录。假设,仅使用谓词P3进行数据记录查询时(SELECT*FROM T1WHERE P3),查询到全部记录;而仅使用谓词P4进行数据记录查询时(SELECT*FROM T1WHERE P4),查询到记录1,记录2,记录7和记录8。
接着,针对谓词P3和P4分别建立对应的N元行向量以表示其过滤性,其中N是不使用任何谓词进行数据记录查询时查询到的数据记录(即表T1中的全部数据记录)的数目,并且在该行向量中,与所述查询到的数据记录的序号对应位置的元素的值为1,其余位置的元素的值为0。由此,可以得到如下分别与P3和P4对应的N元行向量:
P3 [1 1 1 1 1 1 1 1]
P4 [1 1 0 0 0 0 1 1] ......(2)
在本示例中,通过使用单个复杂谓词对要查询的数据记录进行实际查询的查询结果来表示谓词的过滤性,因此是非常准确的。
随后,在步骤S22中,基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
谓词连接词是对其前后连接的两个谓词进行逻辑运算的逻辑运算符,包括AND和OR。可以理解,在谓词连接词为AND的情况下,对于其连接的两个的谓词而言,应当将在运行查询语句时能够过滤出(查询出)较少数据记录的谓词放在前面,以减少后面的谓词处理的数据记录的数目,从而减少总体的谓词估值检查。例如,假设:表MAIN_TABLE中有1000条记录,示意性查询语句为SELECT*FROM MAIN_TABLE WHERE Predicate1and Predicate2;谓词Predicate1可以过滤出总记录数中的800条记录,谓词Predicate2可以过滤出总记录数中的100条记录。按照目前的谓词顺序,在执行该查询语句时,首先需要对于数据表中的所有记录逐条确定是否满足谓词Predicate1,即谓词Predicate1被估值检查1000次;由于该查询语句中的谓词连接词为AND,所以该查询语句要查询的是同时满足谓词Predicate1和predicate2的的记录,因此随后仅针对由Predicate1过滤出的800条记录逐条确定是否满足谓词Predicate2,即谓词Predicate2被估值检查800次,所以将进行总计1800次的谓词估值检查。然而,如果将谓词的顺序颠倒,即将谓词Predicate2放在谓词连接词AND之前,则Predicate2将被估值检查1000次,但是Predicate1将仅被估值检查100次,所以将进行总计1100次的谓词检查。与此相反,在谓词连接词为OR的情况下,对于其连结的两个的谓词而言,应当将在运行查询语句时能够过滤出(查询出)较多数据记录的谓词放在前面,以尽可能先取出较多的数据。
在本申请中,在谓词连接词为AND的情况下,将能够过滤出较少的数据记录的谓词称为过滤性强的谓词;相反在谓词连接词为OR的情况下,将能够过滤出较多的数据记录的谓词称为过滤性强的谓词。
图3示出了步骤S22的示例性处理过程。以下将参考图3对步骤S22中的处理进行详细描述。
在步骤S221,对于各个N元行向量,确定其中值为1的元素的数目。
对于上述示例的最高层级的P3和P4而言,从表达式(2)可以看出,与P3对应的N元行向量中值为1的元素的数目是8,与P4对应的N元行向量中值为1的元素的数目是4。能够理解,N元行向量中值为1的元素越多,则表示与该N元行向量对应的谓词过滤出的数据记录越多。
随后,在步骤S222,根据该预定层级的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元素的数目来对该预定层级中的复杂谓词进行重新排序。具体的,在谓词连接词为AND的情况下,使得与值为1的元素的数目少的N元行向量对应的复杂谓词排在与值为1的元素的数目多的N元行向量对应的复杂谓词之前;在谓词连接词为OR的情况下,使得与值为1的元素的数目多的N元行向量对应的复杂谓词排在与值为1的元素的数目少的N元行向量对应的复杂谓词之前。
P3和P4之间的谓词连接词为AND,根据前面的分析可知,应当将过滤性强的谓词,即在运行查询语句时能够过滤出较少数据记录的谓词放在前面。因此,将P3和P4的顺序颠倒,使得P4排在P3之前。
至此,对最高层级的谓词P3和P4进行了重新排序。需要说明的是,虽然在上面的示例中P1到P5均为复杂谓词,但是上述处理步骤也可以应用于包含有简单谓词的谓词表达式。例如,假设谓词表达式为P1AND(P2OR(P3OR P4OR P5)),其中P1,P2,P4和P5为复杂谓词,P3为简单谓词。在此情况下,在针对最高层级P3OR P4OR P5进行重新排序时,可以同样的应用上述步骤S21和S22,仅对复杂谓词P4和P5的过滤性进行比较并相应地调整其顺序,而不对P3进行任何处理。
另外,在上面的示例中最高层级仅包含两个复杂谓词P3和P4,事实上该最高层级或者其他层级中的复杂谓词可能不止两个。在此情况下,同样可以应用上述处理步骤。例如,假设谓词表达式为P1AND(P2OR(P3AND P4AND P5)),其中P3,P4和P5均为复杂谓词。在此情况下,在针对最高层级P3AND P4AND P5进行重新排序时,可以同样的应用上述步骤S21和S22,对三个复杂谓词P3,P4和P5的过滤性进行比较并相应地调整其顺序。另一方面,本领域技术人员在应用根据本发明实施例的上述方法时可以根据需要仅对预定层级的部分复杂谓词进行所述谓词重新排序。例如,对于上述谓词表达式P1AND(P2OR(P3AND P4AND P5)),尽管最高层级有三个复杂谓词,但是为了避免重新排序过程耗时太长,或者例如用户仅关心其中谓词P3和P4的优化,则可以只对该最高层级中的谓词P3和P4进行重新排序,即在进行重新排序时不考虑P5。
回到图2,随后可以通过步骤S23-S26继续对谓词表达式中的其他谓词进行重新排序。
如图2所示,在步骤S23中,对于由所述重新排序当前针对的层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性。
由于步骤S22中的重新排序操作当前所针对的层级中的各谓词及连接它们的谓词连接词构成的复合谓词仍可能要参加后续的重新排序,所以需确定该复合谓词的过滤性。
具体的,在该步骤中,对于与所述重新排序当前所针对的层级中的各个谓词对应的各个N元行向量,逐个元素地执行由所述谓词连接词代表的逻辑运算,得到对应于所述复合谓词的中间N元行向量。
对于上述示例的最高层级的P3和P4而言,如图4所示,将分别与P3和P4对应的N元行向量对齐,并逐个元素地对其中对应位置的元素执行AND运算,由此得到中间N元行向量TMP[1 1 0 0 0 0 1 1],用来表示复合谓词(P3AND P4)的过滤性。
需要说明的是,在该步骤中将对所述重新排序操作当前所针对的层级中所有谓词的N元行向量进行由谓词连接词代表的逻辑运算,而并非仅对被实际进行了位置调整的谓词进行该运算。例如,对于谓词表达式P1AND(P2OR(P3AND P4AND P5))(其中P1,P2,P4和P5为复杂谓词,P3为简单谓词),根据本实施例,在之前的步骤中仅需对复杂谓词P4和P5确定过滤性并进行重新排序操作,而不必对简单谓词P3进行操作。因此,首先对于P3建立对应的N元行向量(具体操作参见上文中步骤S21中的描述,此处不再赘述),随后将与P3,P4和P5分别对应的3个N元行向量逐个元素地进行AND操作,得到用于表示复杂谓词(P3AND P4ANDP5)的过滤性的中间N元行向量。
在步骤S24中,对于比重新排序当前针对的层级低一层级的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对要查询的数据记录进行查询的结果,确定该复杂谓词的过滤性。
在步骤S25中,基于所述过滤性,对所述低一层级的谓词进行重新排序,以使得过滤性强的复杂谓词位于过滤性弱的复杂谓词之前。
通过步骤S24和S25,对于比步骤S22中的重新排序过程当前针对的层级低一层级的谓词进行重新排序。步骤S24和S25中的操作分别与步骤S21和S22中的操作基本相同,此处不再赘述,而仅以上述示例谓词表达式P1AND(P2OR(P3AND P4OR P5))(其中P1到P5均为复杂谓词)为例,进行简单描述。
如前所述,对于该示例谓词表达式而言,P3和P4是最高层级(第4层级)的谓词,P5是第3层级的谓词。另外,复合谓词(P3AND P4)也位于第3层级,并且可以看作是复杂谓词。因此,此时将对复合谓词(P3AND P4)以及P5执行重新排序过程。
假设仅使用谓词P5进行数据记录查询时(SELECT*FROM T1WHERE P5),查询到记录2和记录3。由此,可以针对谓词P5建立对应的N元行向量:P5[0 1 1 0 0 0 0 0]。如图4所示,对应于复合谓词(P3AND P4)的N元行向量TMP[1 1 0 0 0 0 1 1]中值为1的元素的数目是4,与P5对应的N元行向量中值为1的元素的数目是2。由于(P3AND P4)和P5之间的谓词连接词为OR,根据前面的分析可知,应当将过滤性强的谓词,即在运行查询语句时能够过滤出较多数据记录的谓词放在前面,因此,不需改变(P3AND P4)和P5的顺序。
随后,在步骤S26中判断是否对查询语句的预定结束层级的谓词执行了重新排序。如果判断结果为“是”,则根据本实施例的优化方法结束;如果判断结果为“否”,则回到步骤S23。
例如,对于上述示例谓词表达式P1AND(P2OR(P3AND P4OR P5))(其中P1到P5均为复杂谓词),假设所述预定结束层级为最低层级,即第一层级,则此时步骤S26的判断结果为否,处理返回到步骤S23。下面将结合图4,对将根据本实施例的优化方法应用于该示例谓词表达式的后续处理步骤进行简单描述。
图4示出了应用根据本实施例的优化方法对谓词执行重新排序过程的示例情形。假设仅使用谓词P2进行数据记录查询时(SELECT*FROM T1WHERE P2),查询到记录1和记录8;仅使用谓词P1进行数据记录查询时(SELECT*FROM T1WHERE P1),查询到记录2,记录3,记录4,记录6和记录8。在该情况下,对应于P2和P1的N元行向量分别为P2[1 0 0 0 0 00 1]和P1[0 1 1 1 0 1 0 1]。如图4所示,在针对第3层级的谓词执行重新排序过程之后,确定对应于复合谓词P3AND P4OR P5的N元行向量TMP[1 1 1 0 0 0 1 1],其中值为1的元素的数目是5,而与P2对应的N元行向量中值为1的元素的数目是2。由于P2和(P3AND P4)OR P5之间的谓词连接词为OR,因此,不需改变P2和(P3AND P4)OR P5的顺序。至此,对从第4层级到第2层级的谓词执行了谓词重新排序过程。由于预定结束层级为第一层级,因此此时步骤S26的判断结果为否,处理再次返回到步骤S23。此时,确定对应于复合谓词P2OR(P3AND P4OR P5)的N元行向量TMP[11 1 0 0 0 1 1],其中值为1的元素的数目是5,而与P1对应的N元行向量中值为1的元素的数目也是5,因此不需改变P1和P2OR(P3AND P4OR P5)的顺序。至此,对从第4层级到第1层级的谓词执行了谓词重新排序过程。此时,步骤S26的判断结果为“是”,对于整个谓词表达式中的各个谓词执行根据本实施例的优化方法的过程结束。
以上已经对根据本发明一个实施例的关系型数据库中的查询语句的优化方法进行了描述。在该实施例中,用精确表示使用单个谓词对要查询的数据记录进行实际查询的结果的行向量来表示谓词的过滤性,并基于该精确的过滤性对谓词进行重新排序。所述过滤性具有高粒度、高精确性,基于该过滤性进行的重新排序考虑了实际的数据,因此是可靠和精确的,从而应用本实施例的优化方法的查询语句在执行时可以获得高效的执行效率。
需要说明的是,虽然上文中结合图2到图4,描述了从查询语句最高层级的谓词开始到最低层级的谓词为止对整个谓词表达式中的各个谓词执行谓词重新排序过程,但是这并非是必须的。更明确的说,本领域技术人员在应用根据本发明上述实施例的方法时可以根据需要仅对预定的一个或多个层级的谓词进行所述谓词重新排序。例如,为了避免重新排序过程耗时太长,或者诸如仅关心查询中谓词P3和P4的优化,则可以只对最高层级的谓词P3和P4进行重新排序。因此上述实施例中的步骤S23到S26并非是必须的。
[第二实施例]
根据上述实施例,在对复杂谓词进行重新排序时,不考虑简单谓词,即简单谓词不参与重新排序过程。然而事实上,简单谓词的存在对于复杂谓词的重新排序可能是有影响的。在本实施例中,在对复杂谓词进行重新排序时,将考虑简单谓词的过滤性,以获得更加精确的排序,从而使得查询语句在执行时可以获得更高效的执行效率。
根据本实施例的优化方法与第一实施例中的优化方法基本相同,其区别仅在于步骤S221中的处理。具体地,在根据本实施例的优化方法中,在预定层级中的谓词中存在至少一个简单谓词的情况下,在步骤S221中,对于每一个所述简单谓词,建立对应的所述N元行向量;随后,对于每个与所述复杂谓词对应的N元行向量,在谓词连接词为AND时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1的元素的数目,作为该N元行向量中值为1的元素的数目;在谓词连接词为OR时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他值为1的元素的数目,作为该N元行向量中值为1的元素的数目。
假设当前进行重新排序的层级中的谓词表达式为:P1OR P2OR P3,其中P1为简单谓词,P2和P3都是复杂谓词,并且通过步骤S21已经确定对应于谓词P2和P3的N元行向量分别为:
P2[1 1 0 1 1 0 1 1 0 1]
P3[0 0 1 1 1 1 1 0 1 0] ……(3)
以下将结合图5来说明应用根据本实施例的优化方法对该示例谓词执行重新排序过程的示例情形。
首先对于简单谓词P1确定其对应的N元行向量。假设仅使用P1进行数据记录查询时,查询到记录1,记录2,记录5,记录8和记录10,则可以确定对应的N元行向量为P1[1 10 0 1 0 0 1 0 1]。如图5所示,如果不考虑P1的过滤性而对P2和P3进行排序(即按照第一实施例的步骤S221进行处理),则可以确定与P2对应的N元行向量中值为1的元素的数目是7,与P3对应的N元行向量中值为1的元素的数目是6。由于P2和P3之间的谓词连接词为OR,因此在后续的步骤S222中应颠倒P2和P3的顺序。然而,在实际执行查询语句时,简单谓词在数据管理器层就被执行了,而并非与复杂谓词一样要等到在关系数据服务器层才能执行,因此对于例如上述的谓词表达式,在执行P2和P3时,实际上已经知道执行P1的查询结果。更明确的说,如图5所示,由于执行P1将过滤出记录1,记录2,记录5,记录8和记录10,并且P1,P2和P3之间的谓词连接词为OR,因此在执行P2和P3时已知记录1,记录2,记录5,记录8和记录10满足谓词表达式P1OR P2OR P3,从而对于P2和P3而言,比较其相对于未被P1过滤出的数据记录的过滤性更有意义,基于该过滤性确定的排列顺序也更准确。因此在该步骤S221中,对于与P2对应的N元行向量,确定其中除了与P1的N元行向量中值为1的元素的位置(即位置1,2,5,8,10)对应的位置中的元素之外,其他值为1的元素的数目为2,对于与P3对应的N元行向量,确定其中除了与P1的N元行向量中值为1的元素的位置对应的位置中的元素之外,其他值为1的元素的数目为5。在后续的步骤S222中,将基于这一元素数目值确定是否需要颠倒P2和P3的顺序。
需要说明的是,本领域技术人员能够理解,对于例如P1AND P2AND P3的连接词为AND的谓词表达式(其中P1为简单谓词,P2和P3都是复杂谓词),应当比较P2和P3相对于已被P1过滤出的数据记录的过滤性,即对于与P2和P3对应的N元行向量,应确定其中除了与P1的N元行向量中值为0的元素的位置(即位置3,4,6,7,9)对应的位置中的元素之外,其他值为1的元素的数目。
[第三实施例]
在上述第一和第二实施例中,使用具有高粒度、高精确性的行向量来表示谓词的过滤性。然而,当数据记录的数量很大时,存储对应于各个谓词的行向量需占用很大的存储空间,并且基于行向量来确定是否要改变谓词现有的排序的计算量也较大。本实施例中提出了一种粒度和精确性相对较低,但是占用的存储空间和计算量相对较小,从而执行效率较高的优化方法。
根据本实施例的优化方法与第一实施例中的优化方法基本相同,其区别仅在于在本实施例中,使用谓词的过滤因子来表示谓词的过滤性。下面,将参考图2对根据本实施例的优化方法进行说明。在下文中,仅就根据本实施例的优化方优与第一实施例中不同的部分进行描述,对于相同的部分则不再详细说明,以免赘述。
在步骤S21中,对于查询语句中一预定层级的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性。
在该步骤中,首先对于所述两个复杂谓词中的每一个,确定仅使该复杂谓词查询到的数据记录的数目。
例如,仍然以表达式(1)所示的查询语句为例。对于例如其中最高层级的谓词,假设如前所述,仅使用谓词P3进行数据记录查询时查询到全部8条记录;而仅使用谓词P4进行数据记录查询时查询到4条记录(记录1,记录2,记录7和记录8)。
随后,根据所述查询到的数据记录的数目,计算该复杂谓词的过滤因子。对于P3,计算出其过滤因子为8/8=1,对于P4,计算出其过滤因子为4/8=0.5。
在步骤S22中,基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
具体的,在该层级中的谓词连接词为AND的情况下,使得过滤因子的值小的复杂谓词排在过滤因子的值大的复杂谓词之前;在谓词连接词为OR的情况下,使得过滤因子的值大的复杂谓词排在过滤因子的值小的复杂谓词之前。
对于上述示例的最高层级的P3和P4而言,由于P3和P4之间的谓词连接词为AND,并且P3的过滤因子大于P4的过滤因子,因此,将P3和P4的顺序颠倒,使得P4排在P3之前。
至此,对最高层级的谓词P3和P4进行了重新排序。随后,根据本实施例的优化方法可以通过步骤S23-S26继续对谓词表达式中的其他谓词进行重新排序。
如图2所示,在步骤S23中,对于由所述重新排序当前针对的层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性。
这里,采用本领域中惯用的方法来确定复合谓词的过滤性。具体地,在谓词连接词为AND的情况下,将所述重新排序当前所针对的层级中的各个谓词的过滤因子相乘,作为所述复合谓词的过滤因子;在所述谓词连接词为OR的情况下,将所述重新排序当前所针对的层级中的各个谓词的过滤因子相加,作为所述复合谓词的过滤因子。
对于上述示例的最高层级的P3和P4而言,复合谓词(P3AND P4)的过滤因子为1×0.5=0.5。
需要说明的是,与第一实施例中相同,在该步骤中将对所述重新排序操作当前所针对的层级中所有谓词的过滤因子进行相乘或相加运算,而并非仅对被实际了进行位置调整的谓词进行该运算。
在步骤S24中,对于比重新排序当前针对的层级低一层级的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对要查询的数据记录进行查询的结果,确定该复杂谓词的过滤性。
在步骤S25中,基于所述过滤性,对所述低一层级的谓词进行重新排序,以使得过滤性强的复杂谓词位于过滤性弱的复杂谓词之前。
通过步骤S24和S25,对于比步骤S22中的重新排序过程当前所针对的层级低一层级的谓词进行重新排序。步骤S24和S25中的操作分别与步骤S21和S22中的操作基本相同,此处不再赘述,而仅以上述示例谓词表达式P1AND(P2OR(P3AND P4OR P5))(其中P1到P5均为复杂谓词)为例,进行简单描述。
如前所述,对于该示例谓词表达式而言,P3和P4是最高层级(第4层级)的谓词,P5是第3层级的谓词。另外,复合谓词(P3AND P4)也位于第3层级,并且可以看作是复杂谓词。因此,此时将对复合谓词(P3AND P4)以及P5执行重新排序过程。
假设如前所述仅使用谓词P5进行数据记录查询时,查询到2条记录(记录2和记录3)。由此,可以计算出谓词P5的过滤因子为:2/8=0.25。由于复合谓词(P3AND P4)的过滤因子为0.5,并且(P3AND P4)和P5之间的谓词连接词为OR,因此,不需改变(P3AND P4)和P5的顺序。
随后,在步骤S26中判断是否对查询语句的预定结束层级的谓词执行了重新排序。如果判断结果为“是”,则根据本实施例的优化方法结束;如果判断结果为“否”,则回到步骤S23。
例如,对于上述示例谓词表达式P1AND(P2OR(P3AND P4OR P5)),假设所述预定结束层级为最低层级,即第一层级,则此时步骤S26的判断结果为否,处理返回到步骤S23。以下,对将根据本实施例的优化方法应用于该示例谓词表达式的后续处理步骤进行简单描述。
假设仅使用谓词P2进行数据记录查询时查询到两条记录(记录1和记录8),由此可以确定P2的过滤因子为2/8=0.25,而复合谓词P3AND P4OR P5的过滤因子为0.5+0.25=0.75。由于P2和(P3AND P4)OR P5之间的谓词连接词为OR,因此,不需改变P2和(P3AND P4)OR P5的顺序。至此,对从第4层级到第2层级的谓词执行了谓词重新排序过程。由于预定结束层级为第一层级,因此此时步骤S26的判断结果为否,处理再次返回到步骤S23。假设仅使用谓词P1进行数据记录查询时查询到5条记录(记录2,3,4,6和8),由此可以确定P1的过滤因子为5/8=0.625,而复合谓词P2OR(P3AND P4OR P5)的过滤因子为0.75+0.25=1。由于P1和P2OR(P3AND P4OR P5)之间的谓词连接词为AND,因此颠倒P1和P2OR(P3AND P4OR P5)的顺序。至此,对从第4层级到第1层级的谓词执行了谓词重新排序过程。此时,步骤S26的判断结果为“是”,对于整个谓词表达式中的各个谓词执行根据本实施例的优化方法的过程结束。
需要说明的是,与第一实施例类似,本领域技术人员在应用根据该实施例的方法时可以根据需要仅对预定的一个或多个层级的谓词进行所述谓词重新排序。例如,为了避免重新排序过程耗时太长,或者诸如仅关心查询中谓词P3和P4的优化,则可以只对最高层级的谓词P3和P4进行重新排序。因此本实施例中的步骤S23到S26并非是必须的。
可以看出,对于表达式(1)中所示的谓词表达式应用根据本实施例的优化方法所确定的排列顺序与应用第一实施例所确定的排列顺序并不相同。虽然与第一实施例相比,本实施例中所确定的过滤性的粒度较低、精确度较低,因而基于该过滤性对谓词进行的重新排序可能不如第一实施例中精确;然而,本实施例中不需要存储大量的向量,因此节省了存储空间,并且基于过滤因子来确定是否要改变谓词现有的排序的计算量也大大减小。另一方面,不同于现有技术中根据统计信息来估算简单谓词的过滤因子,在本实施例中是根据将各个谓词应用于要查询的数据记录的实际查询结果来计算过滤因子的。因此本实施例中的过滤因子相对于现有技术要精确得多。
下面,参照图6来描述根据本发明实施例的关系型数据库中的查询语句的优化设备的结构框图。该设备可以执行以上各个实施例所述的方法。
如图6所示,根据本发明实施例的优化设备600包括过滤性确定装置601、和重新排序装置602。该优化设备600可以在数据库中的优化器内部实现,也可以实现为独立于优化器的外部设备。
过滤性确定装置601对于查询语句中一层级的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性。重新排序装置602基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。在排序过程中,该重新排序装置602仅对确定了过滤性的复杂谓词(即用户关注的复杂谓词)进行顺序调整,而对于未确定过滤性的谓词的顺序则并不关心。
谓词的过滤性用来反映谓词过滤出复合条件的记录的能力,其可以通过各种适当的参数、变量来表示。根据用于表示过滤性的具体参数、变量的不同,所述过滤性确定装置601和重新排序装置602可以采用不同的结构或执行不同的功能。下面,以使用表示实际查询的结果的行向量来表示谓词的过滤性的情况为例,详细描述过滤性确定装置601和重新排序装置602。
图7示出了过滤性确定装置601的结构框图。如图7所示,过滤性确定装置601可以包括数据记录确定单元6011和第一过滤性确定单元6012。
数据记录确定单元6011对于至少两个复杂谓词中的每一个,确定仅使用其进行数据记录查询时查询到的数据记录的序号。第一过滤性确定单元6012根据数据记录确定单元6011查询到的数据记录的序号,对相应的复杂谓词建立对应的N元行向量,其中N是所述预定数据记录(全部数据记录)的数目,并且在该行向量中,与查询到的数据记录的序号对应位置的元素的值为1,其余位置的元素的值为0。因此,根据N元行向量中的元素的值,可以容易地确定相应的谓词可以过滤出哪些记录。
重新排序装置602可以包括元素数目确定单元6021和顺序调整单元6022。元素数据确定单元6021对于各个N元行向量,确定其中值为1的元素的数目。顺序调整单元6022根据预定层级的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元素的数目来对该预定层级中的谓词进行重新排序。能够理解,N元行向量中值为1的元素的数目越少,则表明与该N元行向量对应的谓词能够从全部数据记录中过滤出的数据记录越少;反之则表明与该N元行向量对应的谓词能够从全部数据记录中过滤出的数据记录越多。如前所述,在谓词连接词为AND的情况下,对于其连接的两个的谓词而言,应当将在运行查询语句时能够过滤出较少数据记录的谓词放在前面,以减少后面的谓词处理的数据记录的数目,从而减少总体的谓词估值检查;而在谓词连接词为OR的情况下,则应当将在运行查询语句时能够过滤出较多数据记录的谓词放在前面。因此,顺序调整调整单元6022在谓词连接词为AND的情况下,把与值为1的元素的数目少的N元行向量对应的复杂谓词排在与值为1的元素的数目多的N元行向量对应的复杂谓词之前;在谓词连接词为OR的情况下,把与值为1的元素的数目多的N元行向量对应的复杂谓词排在与值为1的元素的数目少的N元行向量对应的复杂谓词之前。
以上以对于查询语句中预定层级的谓词进行重新排序为例,描述了根据本发明实施例的上述优化设备600的结构和功能。实际上,通过对查询语句中多个层级的谓词分别应用上述优化设备600,可以对多个层级的谓词进行重新排序。需要注意的是,当该优化设备600对于查询语句中预定层级的复杂谓词进行了重新排序之后,由该层级中的各谓词及连接它们的谓词连接词构成的复合谓词仍可能要参加后续的重新排序,所以需确定该复合谓词的过滤性。在此情况下,可选地,过滤性确定装置601还可以包括第二过滤性确定单元6013,其对于由预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定过滤性,并将该过滤性传递至重新排序装置602。具体的,第二过滤性确定单元6013对于与预定层级中的各个谓词对应的各个N元行向量,逐个元素地对其中对应位置的元素执行由所述谓词连接词代表的逻辑运算,从而得到用于表示所述复合谓词的过滤性的中间N元行向量。需要说明的是,第二过滤性确定单元6013将对预定层级中所有谓词的N元行向量进行由谓词连接词代表的逻辑运算,而并非仅对被实际进行了位置调整的谓词进行该运算。
如前所述,以上所述的重新排序装置602仅对用户关注的复杂谓词进行顺序调整,而对于简单谓词的顺序则并不关心。因此,在对复杂谓词进行重新排序时,不考虑简单谓词,即简单谓词不参与重新排序过程。然而事实上,简单谓词的存在对于复杂谓词的重新排序可能是有影响的。其原因在上述第二实施例中已经进行了说明,此处不再赘述。
针对这一情况,可以在对复杂谓词进行重新排序时,考虑简单谓词的过滤性,以获得更加精确的排序。更明确地说,在所述预定层级中的谓词中存在至少一个简单谓词的情况下,元素数据确定单元6021可以排除该简单谓词对于复杂谓词的过滤性的影响,来对于该预定层级中的复杂谓词进行排序。具体的,对于与复杂谓词对应的每个N元行向量,在谓词连接词为AND时,确定该N元行向量中除了与简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1的元素的数目,作该为N元行向量中值为1的元素;在谓词连接词为OR时,确定该N元行向量中除了与简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他值为1的元素的数目,作该为N元行向量中值为1的元素。顺序调整单元6022根据这样确定的元素数目,来对谓词进行重新排序。
下面,对利用实际查询的结果计算的过滤因子来表示谓词的过滤性的情况,描述过滤性确定装置601和重新排序装置602。
在该情形中,过滤性确定装置601同样可以包括数据记录确定单元6011和第一过滤性确定单元6012。
数据记录确定单元6011对于至少两个复杂谓词中的每一个,确定仅使用其进行数据记录查询时,查询到的数据记录的数目。第一过滤性确定单元6012按照上文所述的方式根据数据记录的数目确定相应谓词的过滤因子,此处不再赘述。
重新排序装置602基于所述过滤因子,对所述预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。具体的,如前文所述,为了减少总体的谓词估值检查,从而提高查询的执行效率,在该预定层级中的谓词连接词为AND的情况下,重新排序装置602将过滤因子的值小的复杂谓词排在过滤因子的值大的复杂谓词之前;当谓词连接词为OR时,重新排序装置602将过滤因子的值大的复杂谓词排在过滤因子的值小的复杂谓词之前。
如前文中提到的,根据本发明实施例的上述优化设备600同样可以对多个层级的谓词进行重新排序。需要注意的是,当该优化设备600对于查询语句中预定层级的谓词进行了重新排序之后,该层级中的各谓词及连接它们的谓词连接词构成的复合谓词仍可能要参加后续的重新排序,所以需确定该复合谓词的过滤性。在此情况下,可选地,过滤性确定装置601还可以包括第二过滤性确定单元6013,其对于由预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定其过滤性,并将该过滤性传递至重新排序装置602。这里,采用本领域中惯用的方法来确定复合谓词的过滤性。具体地,在谓词连接词为AND的情况下,第二过滤性确定单元6013将该预定层级中的各个谓词的过滤因子相乘,作为复合谓词的过滤因子;在谓词连接词为OR的情况下,第二过滤性确定单元6013将该预定层级中各个谓词的过滤因子相加,作为复合谓词的过滤因子。
需要说明的是,第二过滤性确定单元6013将对预定层级中所有谓词的过滤因子进行相乘或相加运算,而并非仅对被实际进行了位置调整的谓词进行该运算。
根据本发明实施例的上述方法和设备根据使用单个谓词对要查询的数据记录进行实际查询的结果来确定过滤性,因此该过滤性具有高精确性。相应的,基于该过滤性进行的重新排序考虑了实际的数据,因此是可靠和精确的,从而查询语句在执行时可以获得高效的执行效率。
此外,根据本发明实施例的上述方法和设备使用单个谓词对要查询的数据记录进行实际查询的结果来确定过滤性,其不仅适用于简单谓词,也适用于复杂谓词。因此,根据本发明实施例的上述方法和设备可以应用于同时包含简单谓词和复杂谓词的查询,因此具有较大的适用范围。
此外,根据本发明实施例的上述方法和设备在根据过滤性对复杂谓词进行重新排序时,排除了简单谓词对复杂谓词的过滤性的影响,从而获得了更加准确的排序,使得查询语句在执行时可以获得更高效的执行效率。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种用于关系型数据库中的查询语句的优化方法,包括:
对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该预定层级中的至少两个复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;
基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前,其中所述过滤性是根据谓词连接词进行排序的;以及
其中所述的优化方法还包括:
对于由所述预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性,
其中所述确定该复杂谓词的过滤性包括:
确定仅使用该复杂谓词查询到的数据记录的序号;
建立对应于该复杂谓词的N元行向量以表示该复杂谓词的过滤性,其中N是所述预定数据记录的数目,并且在该行向量中,与所述查询到的数据记录的序号对应位置的元素的值为1,其余位置的元素的值为0,
其中所述确定该复合谓词的过滤性还包括:
对于所述预定层级中未确定过滤性的各个谓词,建立对应的N元行向量,
对于与所述预定层级中的各个谓词对应的各个N元行向量,逐个元素地执行由所述谓词连接词代表的逻辑运算,得到用于表示所述复合谓词过滤性的中间N元行向量,
其中所述对该预定层级中的复杂谓词进行重新排序包括:
对于各个N元行向量,确定其中值为1的元素的数目;
根据该预定层级中的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元素的数目来对该预定层级中的复杂谓词进行重新排序。
2.如权利要求1所述的优化方法,其中在所述预定层级中存在至少一个简单谓词的情况下,所述对于各个N元行向量,确定其中值为1的元素的数目包括:
对于每一个所述简单谓词,建立对应的N元行向量;
对于每个与所述复杂谓词对应的N元行向量,在谓词连接词为AND时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1的元素的数目,作为该N元行向量中值为1的元素的数目;在谓词连接词为OR时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他值为1的元素的数目,作为N元行向量中值为1的元素的数目。
3.如权利要求1所述的优化方法,其中所述确定该复杂谓词的过滤性包括:
确定仅使用该复杂谓词查询到的数据记录的数目;
根据所述查询到的数据记录的数目,计算该复杂谓词的过滤因子。
4.如权利要求3所述的优化方法,其中所述对该预定层级中的复杂谓词进行重新排序包括:
根据该预定层级中的复杂谓词之间的谓词连接词,基于所述过滤因子来对该预定层级中的复杂谓词进行重新排序。
5.如权利要求3所述的优化方法,其中所述确定该复合谓词的过滤性包括:
对于所述预定层级中未确定过滤性的每个谓词,计算该每个谓词的过滤因子,并且基于该预定层级中各个谓词的过滤因子根据以下的至少一种确定所述复合谓词的过滤性:
在谓词连接词为AND的情况下,将所述预定层级中的各个谓词的过滤因子相乘,作为所述复合谓词的过滤因子;在所述谓词连接词为OR的情况下,将所述预定层级中的各个谓词的过滤因子相加,作为所述复合谓词的过滤因子。
6.一种用于关系型数据库中的查询语句的优化设备,包括:
过滤性确定装置,被配置为对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该预定层级中的至少两个复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;
重新排序装置,被配置为基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前,其中所述过滤性是根据谓词连接词进行排序的;以及
其中所述过滤性确定装置包括:
数据记录确定单元,被配置为至少针对所述两个复杂谓词中的每一个,确定仅使用该复杂谓词查询到的数据记录的序号;以及
第一过滤性确定单元,被配置为至少针对所述两个复杂谓词中的每一个建立对应的N元行向量以表示该复杂谓词的过滤性,其中N是所述预定数据记录的数目,并且在该行向量中,与所述查询到的数据记录的序号对应位置的元素的值为1,其余位置的元素的值为0,
其中所述过滤性确定装置还包括:
第二过滤性确定单元,被配置为对于由所述预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性,
其中所述第二过滤性确定单元被配置为:
对于所述预定层级中未确定过滤性的各个谓词,建立对应的N元行向量,
对于与所述预定层级中的各个谓词对应的各个N元行向量,逐个元素地执行由所述谓词连接词代表的逻辑运算,得到用于表示所述复合谓词的过滤性的中间N元行向量,其中所述重新排序装置包括:
元素数目确定单元,被配置为对于各个N元行向量,确定其中值为1的元素的数目;
顺序调整单元,被配置为根据该预定层级中的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元素的数目来对该预定层级中的复杂谓词进行重新排序。
7.如权利要求6所述的优化设备,其中在所述预定层级中存在至少一个简单谓词的情况下,所述元素数目确定单元被配置为:
对于与所述复杂谓词对应的每个N元行向量,在谓词连接词为AND时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1的元素的数目,作为该N元行向量中值为1的元素;在谓词连接词为OR时,确定该N元行向量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他值为1的元素的数目,作为该N元行向量中值为1的元素。
8.如权利要求6所述的优化设备,其中所述过滤性确定装置包括:
数据记录确定单元,被配置为至少针对所述两个复杂谓词中的每一个,确定仅使用该复杂谓词查询到的数据记录的数目;以及
第一过滤性确定单元,被配置为根据所述查询到的数据记录的数目,计算该复杂谓词的过滤因子。
9.如权利要求8所述的优化设备,其中所述重新排序装置被配置为:根据该预定层级中的复杂谓词之间的谓词连接词,基于所述过滤因子来对该预定层级中的复杂谓词进行重新排序。
10.如权利要求6所述的优化设备,其中所述第二过滤性确定单元配置为根据以下的至少一种确定所述复合谓词的过滤性:
在所述预定层级中的谓词连接词为AND的情况下,将该预定层级中的各个谓词的过滤因子相乘,作为所述复合谓词的过滤因子;在所述谓词连接词为OR的情况下,将该预定层级中的各个谓词的过滤因子相加,作为所述复合谓词的过滤因子。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310210410.4A CN104216891B (zh) | 2013-05-30 | 2013-05-30 | 关系型数据库中的查询语句的优化方法和设备 |
US14/250,505 US9811557B2 (en) | 2013-05-30 | 2014-04-11 | Optimizing query statements in relational databases |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310210410.4A CN104216891B (zh) | 2013-05-30 | 2013-05-30 | 关系型数据库中的查询语句的优化方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104216891A CN104216891A (zh) | 2014-12-17 |
CN104216891B true CN104216891B (zh) | 2018-02-02 |
Family
ID=51986328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310210410.4A Expired - Fee Related CN104216891B (zh) | 2013-05-30 | 2013-05-30 | 关系型数据库中的查询语句的优化方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9811557B2 (zh) |
CN (1) | CN104216891B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779136B2 (en) * | 2014-09-30 | 2017-10-03 | Linkedin Corporation | Rearranging search operators |
CN106156083B (zh) * | 2015-03-31 | 2020-02-21 | 联想(北京)有限公司 | 一种领域知识处理方法及装置 |
JP6628455B2 (ja) * | 2015-11-30 | 2020-01-08 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ照会方法および装置ならびにデータベースシステム |
US10572477B2 (en) * | 2016-01-25 | 2020-02-25 | International Business Machines Corporation | Selection of implementation for query execution |
CN106874332B (zh) * | 2016-08-10 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 数据库访问方法和装置 |
CN108804473B (zh) * | 2017-05-04 | 2022-02-11 | 华为技术有限公司 | 数据查询的方法、装置和数据库系统 |
WO2018212106A1 (ja) * | 2017-05-19 | 2018-11-22 | 学校法人神奈川大学 | 情報検索装置、検索用プログラム、データベースの更新方法、データベースの更新装置、データベース更新用プログラム |
WO2018218504A1 (zh) * | 2017-05-31 | 2018-12-06 | 华为技术有限公司 | 数据查询的方法和装置 |
CN110019331A (zh) * | 2017-09-08 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种基于结构化查询语言的查询数据库的方法和装置 |
US11182437B2 (en) * | 2017-10-26 | 2021-11-23 | International Business Machines Corporation | Hybrid processing of disjunctive and conjunctive conditions of a search query for a similarity search |
CN108920604B (zh) * | 2018-06-27 | 2019-08-13 | 百度在线网络技术(北京)有限公司 | 语音交互方法及设备 |
CN109308305B (zh) * | 2018-09-30 | 2021-06-08 | 广州圣亚科技有限公司 | 监测数据的查询方法、装置和计算机设备 |
US11354290B2 (en) | 2020-01-30 | 2022-06-07 | Adobe Inc. | Query processing using inverted index of predicate statements |
US11550848B2 (en) * | 2020-01-30 | 2023-01-10 | Adobe Inc. | Query processing using matrix and reduced predicate statements |
CN111813803B (zh) * | 2020-07-02 | 2023-07-21 | 上海达梦数据库有限公司 | 语句块执行计划的生成方法、装置、设备和存储介质 |
US11615095B2 (en) * | 2020-10-30 | 2023-03-28 | Snowflake Inc. | Automatic pruning cutoff in a database system |
US20220222231A1 (en) * | 2021-01-13 | 2022-07-14 | Coupang Corp. | Computerized systems and methods for using artificial intelligence to optimize database parameters |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093493A (zh) * | 2006-06-23 | 2007-12-26 | 国际商业机器公司 | 数据库查询语言转换方法、转换装置、数据库查询系统 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680603A (en) * | 1994-10-20 | 1997-10-21 | International Business Machines Corporation | Method and apparatus for reordering complex SQL queries containing inner and outer join operations |
US7890491B1 (en) | 1999-12-22 | 2011-02-15 | International Business Machines Corporation | Query optimization technique for obtaining improved cardinality estimates using statistics on automatic summary tables |
US6571233B2 (en) * | 2000-12-06 | 2003-05-27 | International Business Machines Corporation | Optimization of SQL queries using filtering predicates |
US7007009B2 (en) * | 2001-03-15 | 2006-02-28 | International Business Machines Corporation | Representation for data used in query optimization |
US6983275B2 (en) * | 2002-04-16 | 2006-01-03 | International Business Machines Corporation | Optimizing database query by generating, determining the type of derived predicate based on monotonicity of the column generating expression for each remaining inequality predicate in the list of unexamined predicates |
US7120623B2 (en) * | 2002-08-29 | 2006-10-10 | Microsoft Corporation | Optimizing multi-predicate selections on a relation using indexes |
US7434109B1 (en) * | 2002-09-26 | 2008-10-07 | Computer Associates Think, Inc. | Network fault manager for maintaining alarm conditions |
US7376638B2 (en) * | 2003-12-24 | 2008-05-20 | International Business Machines Corporation | System and method for addressing inefficient query processing |
US20050210023A1 (en) * | 2004-03-18 | 2005-09-22 | Renato Barrera | Query optimizer using implied predicates |
US9244979B2 (en) * | 2004-07-02 | 2016-01-26 | Oracle International Corporation | Determining predicate selectivity in query costing |
US7499917B2 (en) | 2005-01-28 | 2009-03-03 | International Business Machines Corporation | Processing cross-table non-Boolean term conditions in database queries |
US7536380B2 (en) | 2005-03-24 | 2009-05-19 | International Business Machines Corporation | Dynamic look ahead predicate generation |
US7966315B2 (en) * | 2005-11-15 | 2011-06-21 | Vmware, Inc. | Multi-query optimization |
US7774336B2 (en) * | 2007-09-10 | 2010-08-10 | International Business Machines Corporation | Adaptively reordering joins during query execution |
US8051069B2 (en) * | 2008-01-02 | 2011-11-01 | At&T Intellectual Property I, Lp | Efficient predicate prefilter for high speed data analysis |
US8676865B2 (en) * | 2008-05-20 | 2014-03-18 | International Business Machines Corporation | Adaptive lazy merging |
US8224806B2 (en) * | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
US20110040722A1 (en) * | 2009-08-17 | 2011-02-17 | International Business Machines Corporation | Predicate selection in event filtering |
US8204873B2 (en) * | 2009-08-26 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | System and method for query expression optimization |
US20120117054A1 (en) | 2010-11-08 | 2012-05-10 | Lakshmikant Shrinivas | Query Analysis in a Database |
US9569485B2 (en) * | 2010-11-19 | 2017-02-14 | International Business Machines Corporation | Optimizing database query |
-
2013
- 2013-05-30 CN CN201310210410.4A patent/CN104216891B/zh not_active Expired - Fee Related
-
2014
- 2014-04-11 US US14/250,505 patent/US9811557B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093493A (zh) * | 2006-06-23 | 2007-12-26 | 国际商业机器公司 | 数据库查询语言转换方法、转换装置、数据库查询系统 |
Also Published As
Publication number | Publication date |
---|---|
US9811557B2 (en) | 2017-11-07 |
CN104216891A (zh) | 2014-12-17 |
US20140358894A1 (en) | 2014-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104216891B (zh) | 关系型数据库中的查询语句的优化方法和设备 | |
Ahmad et al. | Banking sector performance, profitability, and efficiency: a citation‐based systematic literature review | |
US10409797B2 (en) | Systems and methods for providing searchable customer call indexes | |
Arslanturk | Dynamic relation between economic growth, foreign exchange and tourism incomes: An econometric perspective on Turkey | |
CN103177068B (zh) | 按照生存规则合并源记录的系统和方法 | |
US7171408B2 (en) | Method of cardinality estimation using statistical soft constraints | |
US8352414B2 (en) | System for discovering business processes from noisy activities logs | |
EP2369506B1 (en) | System and method of optimizing performance of schema matching | |
CN111210842B (zh) | 语音质检方法、装置、终端及计算机可读存储介质 | |
Peukert et al. | A self-configuring schema matching system | |
US10083263B2 (en) | Automatic modeling farmer | |
CN104137095B (zh) | 用于演进分析的系统 | |
US20050195966A1 (en) | Method and apparatus for optimizing the results produced by a prediction model | |
CN107609130A (zh) | 一种选择数据查询引擎的方法及服务器 | |
AU2020372607B2 (en) | Model selection in a forecasting pipeline to optimize tradeoff between forecast accuracy and computational cost | |
US20220366127A1 (en) | Legal Document Generation | |
CN110175163A (zh) | 基于业务功能智能解析的多库分离方法、系统及介质 | |
US8229940B2 (en) | Query predicate generator to construct a database query predicate from received query conditions | |
CN109947791A (zh) | 一种数据库语句优化方法、装置、设备及存储介质 | |
Park et al. | A modeling framework for business process reengineering using big data analytics and a goal-orientation | |
CN109408799A (zh) | 语义决策方法和系统 | |
US8145626B2 (en) | Method and system for data processing using multidimensional filtering | |
CN108255852B (zh) | Sql执行方法及装置 | |
Carrasco et al. | A 2-tuple fuzzy linguistic RFM model and its implementation | |
US20190130015A1 (en) | Systems and methods for categorizing data transactions |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180202 |