关系型数据库中的查询语句的优化方法和设备的制作方法
【专利摘要】本发明公开了一种用于关系型数据库中的查询语句的优化方法和设备。所述方法包括:对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。通过所述方法和设备,可以缩短数据查询所需的响应时间,提高查询的执行效率。
【专利说明】关系型数据库中的查询语句的优化方法和设备
【技术领域】
[0001] 本发明涉及关系型数据库领域,更具体地,涉及一种关系型数据库中的查询语句 的优化方法和设备。
【背景技术】
[0002] 现今,主流的关系型数据库系统提供了关系数据服务(RDS)。RDS处理过程对数 据库查询语句(以下简称查询语句)进行解析(parse),并根据解析进行查询语句语义变换 (QST)。在此过程中,还对查询语句进行重写(rewrite)。然后,RDS处理过程根据QST处 理的查询进行访问路径选择(即,APS估算),并生成访问路径描述语言(Access Specific Language),以供执行结构产生器来生成执行结构。数据库引擎(或其执行模块)将根据该执 行结构执行该查询以获得查询结果。
[0003] 如何选取最优的访问路径来执行查询一直是数据库查询优化领域的一个重要研 究课题。查询重写是选取最优的访问路径的重要组成部分。在查询重写期间,RDS处理将 查询语句转换为执行起来更有效的形式。现有技术中提供了一些针对简单谓词查询的查询 重写技术,例如谓词再分布技术、谓词顺序重新排序等。在本领域中,通常将顺序包含自变 量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的 谓词称作简单谓词;而将其他类谓词称作复杂谓词,例如,复杂谓词可以包含变量、函数、表 达式、分句等等。在数据库语言中,所述关系运算符或逻辑运算符可以包括" = """NOT"、" IN"、"LIKE"、"BETWEEN" 等。
[0004] 在上述针对简单谓词查询的谓词顺序重新排序技术中,通常基于数据库统计信息 估算简单谓词的过滤因子,并将过滤性强的谓词尽早地应用于查询,以便提高查询效率。然 而,数据库统计信息往往是粗略概要的、并且不能实时准确地反映数据信息,因此基于此计 算出的简单谓词的过滤因子通常不够准确,导致由此确定的谓词排列顺序也不是最优的。 另一方面,由于复杂谓词并非由数据管理器(DM)来处理,而是在关系数据服务器上执行,因 此无法根据数据库统计信息预先估算复杂谓词的过滤因子,从而上述谓词顺序重新排序技 术不适用于复杂谓词。
【发明内容】
[0005] 鉴于以上问题而提出了本发明。本发明的目的是提供一种用于关系型数据库中的 查询语句的优化方法和设备,其能够缩短数据查询所需的响应时间,提高查询的执行效率, 而且所述优化方法和设备可以应用于复杂谓词,从而扩大了查询重写技术的适用范围。
[0006] 根据本发明的一个方面,提供了一种用于关系型数据库中的查询语句的优化方 法,包括:对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该 复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及基于所述过滤 性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂谓词排在过滤性弱 的复杂谓词之前。
[0007] 根据本发明的另一个方面,提供了一种用于关系型数据库中的查询语句的优化设 备,包括:过滤性确定装置,被配置为对于查询语句中一预定层级的至少两个复杂谓词中的 每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过 滤性;以及重新排序装置,被配置为基于所述过滤性,对该预定层级中的复杂谓词进行重新 排序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
[0008] 根据本发明上述方面的方法和设备可以通过使用单个复杂谓词对要实际查询的 数据记录进行查询,来精确地确定各个复杂谓词的过滤性。通过基于该精确地确定的过滤 性对谓词进行重新排序,可以获得高效的执行效率。另外,根据本发明上述方面的优化方法 和设备可以应用于同时包含简单谓词和复杂谓词的查询,因此具有较大的适用范围。
【专利附图】
【附图说明】
[0009] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其 它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。
[0010] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图。
[0011] 图2示出了根据本发明实施例的关系型数据库中的查询语句的优化方法的流程 图。
[0012] 图3示出了根据本发明实施例的关系型数据库中的复杂谓词的重新排序过程的 流程图。
[0013] 图4示出了应用根据本发明第一实施例的优化方法对复杂谓词进行重新排序过 程的示例情形。
[0014] 图5是示出了应用根据本发明第二实施例的优化方法对复杂谓词进行重新排序 过程的示例情形。
[0015] 图6例示了根据本发明实施例的关系型数据库中的查询语句的优化设备的结构 的框图。
[0016] 图7例示了根据本发明实施例的关系型数据库中的查询语句的优化设备中的过 滤性确定装置的结构框图。
【具体实施方式】
[0017] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。
[0018] 所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。 因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括 固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为"电路"、"模 块"或"系统"。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质 中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0019] 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计 算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限 于一电、磁、光、电磁、红外线、或半导体的系统、设备或器件,或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储 器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、 或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程 序的有形介质,该程序可以被指令执行系统、设备或者器件使用或者与其结合使用。
[0020] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括--但 不限于--电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是 计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者 传输用于由指令执行系统、设备或者器件使用或者与其结合使用的程序。
[0021] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限 于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0022] 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++, 还包括常规的过程式程序设计语言一诸如" C"语言或类似的程序设计语言。程序代码可以 完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部 分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网(LAN)或 广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提 供商来通过因特网连接)。
[0023] 下面将参照本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或 框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方 框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专 用计算机或其它可编程数据处理设备的处理器,从而生产出一种机器,这些计算机程序指 令通过计算机或其它可编程数据处理设备执行,产生了实现流程图和/或框图中的方框中 规定的功能/操作的设备。
[0024] 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理设备 以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一 个包括实现流程图和/或框图中的方框中规定的功能/操作的指令设备(instruction means)的制造品(manufacture)。
[0025] 也可以把计算机程序指令加载到计算机、其它可编程数据处理设备、或其它设备 上,使得在计算机、其它可编程数据处理设备或其它设备上执行一系列操作步骤,以产生计 算机实现的过程,从而使得在计算机或其它可编程设备上执行的指令能够提供实现流程图 和/或框图中的方框中规定的功能/操作的过程。
[0026] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使 用范围带来任何限制。
[0027] 如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统 /服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器 28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0028] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器, 外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举 例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0029] 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是 任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动 的和不可移动的介质。
[0030] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存 取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其 它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34 可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为"硬盘驱动器")。尽管图 1中未示出,可以提供用于对可移动非易失性磁盘(例如"软盘")读写的磁盘驱动器,以及对 可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些 情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以 包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被 配置以执行本发明各实施例的功能。
[0031] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器 28中,这样的程序模块42包括--但不限于--操作系统、一个或者多个应用程序、其它 程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程 序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0032] 计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、 显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设 备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的 任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22 进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如 局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20 通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以 结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱 动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0033] [第一实施例]
[0034] 现在参看图2,其示出了根据本发明实施例的关系型数据库中的查询语句的优化 方法。
[0035] 如图2所示,在步骤S21中,对于查询语句中一预定层级中的至少两个复杂谓词中 的每一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的 过滤性。
[0036] 首先对本实施例所涉及的技术术语进行简单的说明。
[0037] 以结构化查询语言为例,谓词位于查询语句中的"Where"指令之后,其用于构造条 件,以过滤出全部数据记录中满足这些条件的记录。如上文所述,在本领域中,通常将顺序 包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、 或分句的谓词称作简单谓词。简单谓词的例子可以包括但不限制于:COL op Value,C0L IS NULL, COL IS NOT NULL, COL BETWEEN valuelAND value2, COLOvalue, COL NOT BETWEEN valuel AND value2 等等,其中,op 表不 " = value、valuel、value2 为常量。简单谓词也称为一阶(Stagel)谓词,其在查询语句运行时,由关系型数据库管理 系统(RDBMS)中的数据管理器(DM)执行。除简单谓词外的其他类谓词称作复杂谓词,例如 COLlop C0L2+value,TLC0Llop T2.C0L2 等等。复杂谓词也称为二阶(Stage2)谓词,其在 查询语句运行时,由RDBMS中关系数据服务器来执行。
[0038] 谓词的过滤性用来反映谓词过滤出复合条件的记录的能力,其可以通过各种适当 的参数、变量来表示。例如,过滤因子是一种常用的过滤性表示参数。谓词的过滤因子是介 于〇和1之间的数字,用于估计谓词为真的记录占全部数据记录的比例。如前文中所提到 的,在现有技术中,简单谓词的过滤因子通常是基于粗略、概要的数据库统计信息估算出来 的,因此往往不够准确。
[0039] 下面将以一个具体的谓词表达式为例,对该步骤中的处理进行详细描述。
[0040] 例如,假设示意性的查询语句为:
[0041] SELECT*
[0042] FROM ΤΙ
[0043] WHERE PI AND (P20R(P3AND P40R Ρ5)),
[0044] 其中,?1,?2沖3,?4和?5均为复杂谓词。 ……(1)
[0045] 根据查询语句执行顺序的规则,分析该谓词表达式可知,Ρ3和Ρ4是最高层级(第4 层级)的谓词,即,在执行所述查询语句时,最先执行的谓词;Ρ5是第3层级的谓词,即在执 行完Ρ3和Ρ4后执行的谓词;Ρ2和Ρ1分别是第2层级和第1层级的谓词。下面以预定层 级是最高层级为例,对步骤21中的处理进行描述。
[0046] 首先,确定仅使用谓词Ρ3和仅使用谓词Ρ4进行数据记录查询时,查询到的数据记 录的序号。
[0047] 从表达式(1)可知,查询语句将针对表Τ1中的数据记录进行查询。为了便于说明, 假设表Τ1中仅存在8条数据记录。即,不使用任何谓词进行数据记录查询时(SELECT*FR0M T1)将查询到从记录1到记录8共8条记录。假设,仅使用谓词P3进行数据记录查询 时(SELECT*FR0M T1WHERE P3),查询到全部记录;而仅使用谓词P4进行数据记录查询时 (SELECT*FR0M T1WHERE P4),查询到记录1,记录2,记录7和记录8。
[0048] 接着,针对谓词P3和P4分别建立对应的N元行向量以表示其过滤性,其中N是不 使用任何谓词进行数据记录查询时查询到的数据记录(即表T1中的全部数据记录)的数目, 并且在该行向量中,与所述查询到的数据记录的序号对应位置的元素的值为1,其余位置的 元素的值为0。由此,可以得到如下分别与P3和P4对应的N元行向量:
[0049] P3 [11111111]
[0050] P4 [1 1 0 0 0 0 1 1] ......(2)
[0051] 在本示例中,通过使用单个复杂谓词对要查询的数据记录进行实际查询的查询结 果来表示谓词的过滤性,因此是非常准确的。
[0052] 随后,在步骤S22中,基于所述过滤性,对该预定层级中的复杂谓词进行重新排 序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
[0053] 谓词连接词是对其前后连接的两个谓词进行逻辑运算的逻辑运算符,包括AND和 0R。可以理解,在谓词连接词为AND的情况下,对于其连接的两个的谓词而言,应当将在运 行查询语句时能够过滤出(查询出)较少数据记录的谓词放在前面,以减少后面的谓词处理 的数据记录的数目,从而减少总体的谓词估值检查。例如,假设:表MAIN_TABLE中有1000 条记录,示意性查询语句为 SELECT*FR0M MAIN_TABLE WHERE Predicateland Predicate〗; 谓词Predicatel可以过滤出总记录数中的800条记录,谓词Predicate2可以过滤出总记 录数中的100条记录。按照目前的谓词顺序,在执行该查询语句时,首先需要对于数据表 中的所有记录逐条确定是否满足谓词Predicatel,即谓词Predicatel被估值检查1000 次;由于该查询语句中的谓词连接词为AND,所以该查询语句要查询的是同时满足谓词 Predicatel和predicate2的的记录,因此随后仅针对由Predicatel过滤出的800条记录 逐条确定是否满足谓词Predicate〗,即谓词Predicate〗被估值检查800次,所以将进行总 计1800次的谓词估值检查。然而,如果将谓词的顺序颠倒,即将谓词Predicate放在谓词 连接词AND之前,则Predicate〗将被估值检查1000次,但是Predicatel将仅被估值检查 100次,所以将进行总计1100次的谓词检查。与此相反,在谓词连接词为0R的情况下,对于 其连结的两个的谓词而言,应当将在运行查询语句时能够过滤出(查询出)较多数据记录的 谓词放在前面,以尽可能先取出较多的数据。
[0054] 在本申请中,在谓词连接词为AND的情况下,将能够过滤出较少的数据记录的谓 词称为过滤性强的谓词;相反在谓词连接词为0R的情况下,将能够过滤出较多的数据记录 的谓词称为过滤性强的谓词。
[0055] 图3示出了步骤S22的示例性处理过程。以下将参考图3对步骤S22中的处理进 行详细描述。
[0056] 在步骤S221,对于各个N元行向量,确定其中值为1的元素的数目。
[0057] 对于上述示例的最高层级的P3和P4而言,从表达式(2)可以看出,与P3对应的N 元行向量中值为1的元素的数目是8,与P4对应的N元行向量中值为1的元素的数目是4。 能够理解,N元行向量中值为1的元素越多,则表示与该N元行向量对应的谓词过滤出的数 据记录越多。
[0058] 随后,在步骤S222,根据该预定层级的复杂谓词之间的谓词连接词,基于各个N元 行向量中值为1的元素的数目来对该预定层级中的复杂谓词进行重新排序。具体的,在谓 词连接词为AND的情况下,使得与值为1的元素的数目少的N元行向量对应的复杂谓词排 在与值为1的元素的数目多的N元行向量对应的复杂谓词之前;在谓词连接词为0R的情况 下,使得与值为1的元素的数目多的N元行向量对应的复杂谓词排在与值为1的元素的数 目少的N元行向量对应的复杂谓词之前。
[0059] P3和P4之间的谓词连接词为AND,根据前面的分析可知,应当将过滤性强的谓词, 即在运行查询语句时能够过滤出较少数据记录的谓词放在前面。因此,将P3和P4的顺序 颠倒,使得P4排在P3之前。
[0060] 至此,对最高层级的谓词P3和P4进行了重新排序。需要说明的是,虽然在上面的 示例中P1到P5均为复杂谓词,但是上述处理步骤也可以应用于包含有简单谓词的谓词表 达式。例如,假设谓词表达式为P1AND(P20R(P30R P40R P5)),其中P1,P2,P4和P5为复杂 谓词,P3为简单谓词。在此情况下,在针对最高层级P30R P40R P5进行重新排序时,可以 同样的应用上述步骤S21和S22,仅对复杂谓词P4和P5的过滤性进行比较并相应地调整其 顺序,而不对P3进行任何处理。
[0061] 另外,在上面的不例中最1?层级仅包含两个复杂谓词P3和P4,事实上该最1?层级 或者其他层级中的复杂谓词可能不止两个。在此情况下,同样可以应用上述处理步骤。例 如,假设谓词表达式为P1AND(P20R(P3AND P4AND P5)),其中P3,P4和P5均为复杂谓词。在 此情况下,在针对最高层级P3AND P4AND P5进行重新排序时,可以同样的应用上述步骤S21 和S22,对三个复杂谓词P3, P4和P5的过滤性进行比较并相应地调整其顺序。另一方面, 本领域技术人员在应用根据本发明实施例的上述方法时可以根据需要仅对预定层级的部 分复杂谓词进行所述谓词重新排序。例如,对于上述谓词表达式P1AND(P20R(P3AND P4AND P5)),尽管最高层级有三个复杂谓词,但是为了避免重新排序过程耗时太长,或者例如用户 仅关心其中谓词P3和P4的优化,则可以只对该最高层级中的谓词P3和P4进行重新排序, 即在进行重新排序时不考虑P5。
[0062] 回到图2,随后可以通过步骤S23-S26继续对谓词表达式中的其他谓词进行重新 排序。
[0063] 如图2所示,在步骤S23中,对于由所述重新排序当前针对的层级中的各谓词及连 接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性。
[0064] 由于步骤S22中的重新排序操作当前所针对的层级中的各谓词及连接它们的谓 词连接词构成的复合谓词仍可能要参加后续的重新排序,所以需确定该复合谓词的过滤 性。
[0065] 具体的,在该步骤中,对于与所述重新排序当前所针对的层级中的各个谓词对应 的各个N元行向量,逐个元素地执行由所述谓词连接词代表的逻辑运算,得到对应于所述 复合谓词的中间N元行向量。
[0066] 对于上述示例的最高层级的P3和P4而言,如图4所示,将分别与P3和P4对应的 N元行向量对齐,并逐个元素地对其中对应位置的元素执行AND运算,由此得到中间N元行 向量TMP[1 1 0 0 0 0 1 1],用来表示复合谓词(P3AND P4)的过滤性。
[0067] 需要说明的是,在该步骤中将对所述重新排序操作当前所针对的层级中所有谓词 的N元行向量进行由谓词连接词代表的逻辑运算,而并非仅对被实际进行了位置调整的谓 词进行该运算。例如,对于谓词表达式P1AND(P20R(P3AND P4AND P5))(其中P1,P2,P4和 P5为复杂谓词,P3为简单谓词),根据本实施例,在之前的步骤中仅需对复杂谓词P4和P5确 定过滤性并进行重新排序操作,而不必对简单谓词P3进行操作。因此,首先对于P3建立对 应的N元行向量(具体操作参见上文中步骤S21中的描述,此处不再赘述),随后将与P3, P4 和P5分别对应的3个N元行向量逐个元素地进行AND操作,得到用于表示复杂谓词(P3AND P4AND P5)的过滤性的中间N元行向量。
[0068] 在步骤S24中,对于比重新排序当前针对的层级低一层级的至少两个复杂谓词中 的每一个,基于由仅使用该复杂谓词对要查询的数据记录进行查询的结果,确定该复杂谓 词的过滤性。
[0069] 在步骤S25中,基于所述过滤性,对所述低一层级的谓词进行重新排序,以使得过 滤性强的复杂谓词位于过滤性弱的复杂谓词之前。
[0070] 通过步骤S24和S25,对于比步骤S22中的重新排序过程当前针对的层级低一层 级的谓词进行重新排序。步骤S24和S25中的操作分别与步骤S21和S22中的操作基本相 同,此处不再赘述,而仅以上述示例谓词表达式P1AND(P20R(P3AND P40R P5))(其中P1到 P5均为复杂谓词)为例,进行简单描述。
[0071] 如前所述,对于该示例谓词表达式而言,P3和P4是最高层级(第4层级)的谓词, P5是第3层级的谓词。另外,复合谓词(P3AND P4)也位于第3层级,并且可以看作是复杂 谓词。因此,此时将对复合谓词(P3AND P4)以及P5执行重新排序过程。
[0072] 假设仅使用谓词P5进行数据记录查询时(SELECT*FR0M T1WHERE P5),查询到记录 2和记录3。由此,可以针对谓词P5建立对应的N元行向量:P5[0 1 1 0 0 0 0 0]。 如图4所示,对应于复合谓词(P3ANDP4)的N元行向量TMP[1 1 0 0 0 0 1 1]中 值为1的元素的数目是4,与P5对应的N元行向量中值为1的元素的数目是2。由于(P3AND P4)和P5之间的谓词连接词为0R,根据前面的分析可知,应当将过滤性强的谓词,即在运行 查询语句时能够过滤出较多数据记录的谓词放在前面,因此,不需改变(P3AND P4)和P5的 顺序。
[0073] 随后,在步骤S26中判断是否对查询语句的预定结束层级的谓词执行了重新排 序。如果判断结果为"是",则根据本实施例的优化方法结束;如果判断结果为"否",则回到 步骤S23。
[0074] 例如,对于上述示例谓词表达式P1AND (P20R(P3AND P40R P5))(其中P1到P5均 为复杂谓词),假设所述预定结束层级为最低层级,即第一层级,则此时步骤S26的判断结果 为否,处理返回到步骤S23。下面将结合图4,对将根据本实施例的优化方法应用于该示例 谓词表达式的后续处理步骤进行简单描述。
[0075] 图4示出了应用根据本实施例的优化方法对谓词执行重新排序过程的示例情形。 假设仅使用谓词P2进行数据记录查询时(SELECT*FR0M T1WHERE P2),查询到记录1和记录 8 ;仅使用谓词P1进行数据记录查询时(SELECT*FR0M T1WHERE P1),查询到记录2,记录3, 记录4,记录6和记录8。在该情况下,对应于P2和P1的N元行向量分别为P2[l 0 0 0 0 0 0 1]和P1[0 1 1 1 0 1 0 1]。如图4所示,在针对第3层级的谓词执行 重新排序过程之后,确定对应于复合谓词P3ANDP40RP5的N元行向量TMP[1 1 1 0 0 0 1 1],其中值为1的元素的数目是5,而与P2对应的N元行向量中值为1的元素的数目 是2。由于P2和(P3AND P4)0R P5之间的谓词连接词为0R,因此,不需改变P2和(P3AND P4)0RP5的顺序。至此,对从第4层级到第2层级的谓词执行了谓词重新排序过程。由于 预定结束层级为第一层级,因此此时步骤S26的判断结果为否,处理再次返回到步骤S23。 此时,确定对应于复合谓词P20R(P3AND P40R P5)的N元行向量TMP[11 1 0 0 0 1 1],其中值为1的元素的数目是5,而与P1对应的N元行向量中值为1的元素的数目也是 5,因此不需改变P1和P20R(P3AND P40R P5)的顺序。至此,对从第4层级到第1层级的谓 词执行了谓词重新排序过程。此时,步骤S26的判断结果为"是",对于整个谓词表达式中的 各个谓词执行根据本实施例的优化方法的过程结束。
[0076] 以上已经对根据本发明一个实施例的关系型数据库中的查询语句的优化方法进 行了描述。在该实施例中,用精确表示使用单个谓词对要查询的数据记录进行实际查询的 结果的行向量来表示谓词的过滤性,并基于该精确的过滤性对谓词进行重新排序。所述过 滤性具有高粒度、高精确性,基于该过滤性进行的重新排序考虑了实际的数据,因此是可靠 和精确的,从而应用本实施例的优化方法的查询语句在执行时可以获得高效的执行效率。
[0077] 需要说明的是,虽然上文中结合图2到图4,描述了从查询语句最高层级的谓词开 始到最低层级的谓词为止对整个谓词表达式中的各个谓词执行谓词重新排序过程,但是这 并非是必须的。更明确的说,本领域技术人员在应用根据本发明上述实施例的方法时可以 根据需要仅对预定的一个或多个层级的谓词进行所述谓词重新排序。例如,为了避免重新 排序过程耗时太长,或者诸如仅关心查询中谓词P3和P4的优化,则可以只对最高层级的谓 词P3和P4进行重新排序。因此上述实施例中的步骤S23到S26并非是必须的。
[0078][第二实施例]
[0079] 根据上述实施例,在对复杂谓词进行重新排序时,不考虑简单谓词,即简单谓词不 参与重新排序过程。然而事实上,简单谓词的存在对于复杂谓词的重新排序可能是有影响 的。在本实施例中,在对复杂谓词进行重新排序时,将考虑简单谓词的过滤性,以获得更加 精确的排序,从而使得查询语句在执行时可以获得更高效的执行效率。
[0080] 根据本实施例的优化方法与第一实施例中的优化方法基本相同,其区别仅在于步 骤S221中的处理。具体地,在根据本实施例的优化方法中,在预定层级中的谓词中存在至 少一个简单谓词的情况下,在步骤S221中,对于每一个所述简单谓词,建立对应的所述N元 行向量;随后,对于每个与所述复杂谓词对应的N元行向量,在谓词连接词为AND时,确定该 N元行向量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其 他值为1的元素的数目,作为该N元行向量中值为1的元素的数目;在谓词连接词为0R时, 确定该N元行向量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之 夕卜,其他值为1的元素的数目,作为该N元行向量中值为1的元素的数目。
[0081] 假设当前进行重新排序的层级中的谓词表达式为:P10R P20R P3,其中P1为简单 谓词,P2和P3都是复杂谓词,并且通过步骤S21已经确定对应于谓词P2和P3的N元行向 量分别为:
[0082] P2[l 10 110 110 1]
[0083] P3 [0 0 1 1 1 1 1 0 1 0] ......(3)
[0084] 以下将结合图5来说明应用根据本实施例的优化方法对该示例谓词执行重新排 序过程的示例情形。
[0085] 首先对于简单谓词P1确定其对应的N元行向量。假设仅使用P1进行数据记录查 询时,查询到记录1,记录2,记录5,记录8和记录10,贝u可以确定对应的N元行向量为PI [1 1 0 0 1 0 0 1 0 1]。如图5所示,如果不考虑P1的过滤性而对P2和P3进行排 序(即按照第一实施例的步骤S221进行处理),则可以确定与P2对应的N元行向量中值为1 的元素的数目是7,与P3对应的N元行向量中值为1的元素的数目是6。由于P2和P3 2 间的谓词连接词为0R,因此在后续的步骤S222中应颠倒P2和P3的顺序。然而,在实际执 行查询语句时,简单谓词在数据管理器层就被执行了,而并非与复杂谓词一样要等到在关 系数据服务器层才能执行,因此对于例如上述的谓词表达式,在执行P2和P3时,实际上已 经知道执行P1的查询结果。更明确的说,如图5所示,由于执行P1将过滤出记录1,记录 2,记录5,记录8和记录10,并且P1,P2和P3之间的谓词连接词为0R,因此在执行P2和P3 时已知记录1,记录2,记录5,记录8和记录10满足谓词表达式P10R P20R 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的顺序。
[0086] 需要说明的是,本领域技术人员能够理解,对于例如P1AND P2AND P3的连接词为 AND的谓词表达式(其中P1为简单谓词,P2和P3都是复杂谓词),应当比较P2和P3相对 于已被P1过滤出的数据记录的过滤性,即对于与P2和P3对应的N元行向量,应确定其中 除了与P1的N元行向量中值为0的元素的位置(即位置3, 4, 6, 7, 9)对应的位置中的元素 之外,其他值为1的元素的数目。
[0087][第三实施例]
[0088] 在上述第一和第二实施例中,使用具有高粒度、高精确性的行向量来表示谓词的 过滤性。然而,当数据记录的数量很大时,存储对应于各个谓词的行向量需占用很大的存储 空间,并且基于行向量来确定是否要改变谓词现有的排序的计算量也较大。本实施例中提 出了一种粒度和精确性相对较低,但是占用的存储空间和计算量相对较小,从而执行效率 较高的优化方法。
[0089] 根据本实施例的优化方法与第一实施例中的优化方法基本相同,其区别仅在于在 本实施例中,使用谓词的过滤因子来表示谓词的过滤性。下面,将参考图2对根据本实施例 的优化方法进行说明。在下文中,仅就根据本实施例的优化方优与第一实施例中不同的部 分进行描述,对于相同的部分则不再详细说明,以免赘述。
[0090] 在步骤S21中,对于查询语句中一预定层级的至少两个复杂谓词中的每一个,基 于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性。
[0091] 在该步骤中,首先对于所述两个复杂谓词中的每一个,确定仅使该复杂谓词查询 到的数据记录的数目。
[0092] 例如,仍然以表达式(1)所示的查询语句为例。对于例如其中最高层级的谓词,假 设如前所述,仅使用谓词P3进行数据记录查询时查询到全部8条记录;而仅使用谓词P4进 行数据记录查询时查询到4条记录(记录1,记录2,记录7和记录8)。
[0093] 随后,根据所述查询到的数据记录的数目,计算该复杂谓词的过滤因子。对于P3, 计算出其过滤因子为8/8=1,对于P4,计算出其过滤因子为4/8=0. 5。
[0094] 在步骤S22中,基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使 得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
[0095] 具体的,在该层级中的谓词连接词为AND的情况下,使得过滤因子的值小的复杂 谓词排在过滤因子的值大的复杂谓词之前;在谓词连接词为0R的情况下,使得过滤因子的 值大的复杂谓词排在过滤因子的值小的复杂谓词之前。
[0096] 对于上述示例的最高层级的P3和P4而言,由于P3和P4之间的谓词连接词为AND, 并且P3的过滤因子大于P4的过滤因子,因此,将P3和P4的顺序颠倒,使得P4排在P3之 刖。
[0097] 至此,对最高层级的谓词P3和P4进行了重新排序。随后,根据本实施例的优化方 法可以通过步骤S23-S26继续对谓词表达式中的其他谓词进行重新排序。
[0098] 如图2所示,在步骤S23中,对于由所述重新排序当前针对的层级中的各谓词及连 接它们的谓词连接词构成的复合谓词,确定该复合谓词的过滤性。
[0099] 这里,采用本领域中惯用的方法来确定复合谓词的过滤性。具体地,在谓词连接词 为AND的情况下,将所述重新排序当前所针对的层级中的各个谓词的过滤因子相乘,作为 所述复合谓词的过滤因子;在所述谓词连接词为0R的情况下,将所述重新排序当前所针对 的层级中的各个谓词的过滤因子相加,作为所述复合谓词的过滤因子。
[0100] 对于上述示例的最高层级的P3和P4而言,复合谓词(P3AND P4)的过滤因子为 1X0. 5=0. 5〇
[0101] 需要说明的是,与第一实施例中相同,在该步骤中将对所述重新排序操作当前所 针对的层级中所有谓词的过滤因子进行相乘或相加运算,而并非仅对被实际了进行位置调 整的谓词进行该运算。
[0102] 在步骤S24中,对于比重新排序当前针对的层级低一层级的至少两个复杂谓词中 的每一个,基于由仅使用该复杂谓词对要查询的数据记录进行查询的结果,确定该复杂谓 词的过滤性。
[0103] 在步骤S25中,基于所述过滤性,对所述低一层级的谓词进行重新排序,以使得过 滤性强的复杂谓词位于过滤性弱的复杂谓词之前。
[0104] 通过步骤S24和S25,对于比步骤S22中的重新排序过程当前所针对的层级低一层 级的谓词进行重新排序。步骤S24和S25中的操作分别与步骤S21和S22中的操作基本相 同,此处不再赘述,而仅以上述示例谓词表达式P1AND(P20R(P3AND P40R P5))(其中P1到 P5均为复杂谓词)为例,进行简单描述。
[0105] 如前所述,对于该示例谓词表达式而言,P3和P4是最高层级(第4层级)的谓词, P5是第3层级的谓词。另外,复合谓词(P3AND P4)也位于第3层级,并且可以看作是复杂 谓词。因此,此时将对复合谓词(P3AND P4)以及P5执行重新排序过程。
[0106] 假设如前所述仅使用谓词P5进行数据记录查询时,查询到2条记录(记录2和记 录3)。由此,可以计算出谓词P5的过滤因子为:2/8=0. 25。由于复合谓词(P3ANDP4)的过 滤因子为〇. 5,并且(P3AND P4)和P5之间的谓词连接词为0R,因此,不需改变(P3AND P4) 和P5的顺序。
[0107] 随后,在步骤S26中判断是否对查询语句的预定结束层级的谓词执行了重新排 序。如果判断结果为"是",则根据本实施例的优化方法结束;如果判断结果为"否",则回到 步骤S23。
[0108] 例如,对于上述示例谓词表达式P1AND (P20R(P3AND P40R P5)),假设所述预定结 束层级为最低层级,即第一层级,则此时步骤S26的判断结果为否,处理返回到步骤S23。 以下,对将根据本实施例的优化方法应用于该示例谓词表达式的后续处理步骤进行简单描 述。
[0109] 假设仅使用谓词P2进行数据记录查询时查询到两条记录(记录1和记录8), 由此可以确定P2的过滤因子为2/8=0. 25,而复合谓词P3AND P40R P5的过滤因子为 0. 5+0. 25=0. 75。由于P2和(P3AND P4)0R P5之间的谓词连接词为OR,因此,不需改变P2 和(P3AND P4) OR P5的顺序。至此,对从第4层级到第2层级的谓词执行了谓词重新排序 过程。由于预定结束层级为第一层级,因此此时步骤S26的判断结果为否,处理再次返回到 步骤S23。假设仅使用谓词P1进行数据记录查询时查询到5条记录(记录2, 3, 4, 6和8), 由此可以确定P1的过滤因子为5/8=0. 625,而复合谓词P20R(P3AND P40R P5)的过滤因子 为0. 75+0. 25=1。由于P1和P20R(P3AND P40R P5)之间的谓词连接词为AND,因此颠倒P1 和P20R(P3AND P40R P5)的顺序。至此,对从第4层级到第1层级的谓词执行了谓词重新 排序过程。此时,步骤S26的判断结果为"是",对于整个谓词表达式中的各个谓词执行根据 本实施例的优化方法的过程结束。
[0110] 需要说明的是,与第一实施例类似,本领域技术人员在应用根据该实施例的方法 时可以根据需要仅对预定的一个或多个层级的谓词进行所述谓词重新排序。例如,为了避 免重新排序过程耗时太长,或者诸如仅关心查询中谓词P3和P4的优化,则可以只对最高层 级的谓词P3和P4进行重新排序。因此本实施例中的步骤S23到S26并非是必须的。
[0111] 可以看出,对于表达式(1)中所示的谓词表达式应用根据本实施例的优化方法所 确定的排列顺序与应用第一实施例所确定的排列顺序并不相同。虽然与第一实施例相比, 本实施例中所确定的过滤性的粒度较低、精确度较低,因而基于该过滤性对谓词进行的重 新排序可能不如第一实施例中精确;然而,本实施例中不需要存储大量的向量,因此节省了 存储空间,并且基于过滤因子来确定是否要改变谓词现有的排序的计算量也大大减小。另 一方面,不同于现有技术中根据统计信息来估算简单谓词的过滤因子,在本实施例中是根 据将各个谓词应用于要查询的数据记录的实际查询结果来计算过滤因子的。因此本实施例 中的过滤因子相对于现有技术要精确得多。
[0112] 下面,参照图6来描述根据本发明实施例的关系型数据库中的查询语句的优化设 备的结构框图。该设备可以执行以上各个实施例所述的方法。
[0113] 如图6所示,根据本发明实施例的优化设备600包括过滤性确定装置601、和重新 排序装置602。该优化设备600可以在数据库中的优化器内部实现,也可以实现为独立于优 化器的外部设备。
[0114] 过滤性确定装置601对于查询语句中一层级的至少两个复杂谓词中的每一个,基 于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性。重新 排序装置602基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性 强的复杂谓词排在过滤性弱的复杂谓词之前。在排序过程中,该重新排序装置602仅对确 定了过滤性的复杂谓词(即用户关注的复杂谓词)进行顺序调整,而对于未确定过滤性的谓 词的顺序则并不关心。
[0115] 谓词的过滤性用来反映谓词过滤出复合条件的记录的能力,其可以通过各种适当 的参数、变量来表示。根据用于表示过滤性的具体参数、变量的不同,所述过滤性确定装置 601和重新排序装置602可以采用不同的结构或执行不同的功能。下面,以使用表示实际查 询的结果的行向量来表示谓词的过滤性的情况为例,详细描述过滤性确定装置601和重新 排序装置602。
[0116] 图7示出了过滤性确定装置601的结构框图。如图7所示,过滤性确定装置601 可以包括数据记录确定单元6011和第一过滤性确定单元6012。
[0117] 数据记录确定单元6011对于至少两个复杂谓词中的每一个,确定仅使用其进行 数据记录查询时查询到的数据记录的序号。第一过滤性确定单元6012根据数据记录确定 单元6011查询到的数据记录的序号,对相应的复杂谓词建立对应的N元行向量,其中N是 所述预定数据记录(全部数据记录)的数目,并且在该行向量中,与查询到的数据记录的序 号对应位置的元素的值为1,其余位置的元素的值为0。因此,根据N元行向量中的元素的 值,可以容易地确定相应的谓词可以过滤出哪些记录。
[0118] 重新排序装置602可以包括元素数目确定单元6021和顺序调整单元6022。元素 数据确定单元6021对于各个N元行向量,确定其中值为1的元素的数目。顺序调整单元 6022根据预定层级的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元素的 数目来对该预定层级中的谓词进行重新排序。能够理解,N元行向量中值为1的元素的数目 越少,则表明与该N元行向量对应的谓词能够从全部数据记录中过滤出的数据记录越少; 反之则表明与该N元行向量对应的谓词能够从全部数据记录中过滤出的数据记录越多。如 前所述,在谓词连接词为AND的情况下,对于其连接的两个的谓词而言,应当将在运行查询 语句时能够过滤出较少数据记录的谓词放在前面,以减少后面的谓词处理的数据记录的数 目,从而减少总体的谓词估值检查;而在谓词连接词为0R的情况下,则应当将在运行查询 语句时能够过滤出较多数据记录的谓词放在前面。因此,顺序调整调整单元6022在谓词连 接词为AND的情况下,把与值为1的元素的数目少的N元行向量对应的复杂谓词排在与值 为1的元素的数目多的N元行向量对应的复杂谓词之前;在谓词连接词为0R的情况下,把 与值为1的元素的数目多的N元行向量对应的复杂谓词排在与值为1的元素的数目少的N 元行向量对应的复杂谓词之前。
[0119] 以上以对于查询语句中预定层级的谓词进行重新排序为例,描述了根据本发明实 施例的上述优化设备600的结构和功能。实际上,通过对查询语句中多个层级的谓词分别 应用上述优化设备600,可以对多个层级的谓词进行重新排序。需要注意的是,当该优化设 备600对于查询语句中预定层级的复杂谓词进行了重新排序之后,由该层级中的各谓词及 连接它们的谓词连接词构成的复合谓词仍可能要参加后续的重新排序,所以需确定该复合 谓词的过滤性。在此情况下,可选地,过滤性确定装置601还可以包括第二过滤性确定单元 6013,其对于由预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定过滤 性,并将该过滤性传递至重新排序装置602。具体的,第二过滤性确定单元6013对于与预 定层级中的各个谓词对应的各个N元行向量,逐个元素地对其中对应位置的元素执行由所 述谓词连接词代表的逻辑运算,从而得到用于表示所述复合谓词的过滤性的中间N元行向 量。需要说明的是,第二过滤性确定单元6013将对预定层级中所有谓词的N元行向量进行 由谓词连接词代表的逻辑运算,而并非仅对被实际进行了位置调整的谓词进行该运算。
[0120] 如前所述,以上所述的重新排序装置602仅对用户关注的复杂谓词进行顺序调 整,而对于简单谓词的顺序则并不关心。因此,在对复杂谓词进行重新排序时,不考虑简单 谓词,即简单谓词不参与重新排序过程。然而事实上,简单谓词的存在对于复杂谓词的重新 排序可能是有影响的。其原因在上述第二实施例中已经进行了说明,此处不再赘述。
[0121] 针对这一情况,可以在对复杂谓词进行重新排序时,考虑简单谓词的过滤性,以获 得更加精确的排序。更明确地说,在所述预定层级中的谓词中存在至少一个简单谓词的情 况下,元素数据确定单元6021可以排除该简单谓词对于复杂谓词的过滤性的影响,来对于 该预定层级中的复杂谓词进行排序。具体的,对于与复杂谓词对应的每个N元行向量,在谓 词连接词为AND时,确定该N元行向量中除了与简单谓词的N元行向量中值为0的元素对 应位置的元素之外,其他值为1的元素的数目,作该为N元行向量中值为1的元素;在谓词 连接词为OR时,确定该N元行向量中除了与简单谓词的N元行向量中值为1的元素对应位 置的元素之外,其他值为1的元素的数目,作该为N元行向量中值为1的元素。顺序调整单 元6022根据这样确定的元素数目,来对谓词进行重新排序。
[0122] 下面,对利用实际查询的结果计算的过滤因子来表示谓词的过滤性的情况,描述 过滤性确定装置601和重新排序装置602。
[0123] 在该情形中,过滤性确定装置601同样可以包括数据记录确定单元6011和第一过 滤性确定单元6012。
[0124] 数据记录确定单元6011对于至少两个复杂谓词中的每一个,确定仅使用其进行 数据记录查询时,查询到的数据记录的数目。第一过滤性确定单元6012按照上文所述的方 式根据数据记录的数目确定相应谓词的过滤因子,此处不再赘述。
[0125] 重新排序装置602基于所述过滤因子,对所述预定层级中的复杂谓词进行重新排 序,以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。具体的,如前文所述,为了 减少总体的谓词估值检查,从而提高查询的执行效率,在该预定层级中的谓词连接词为AND 的情况下,重新排序装置602将过滤因子的值小的复杂谓词排在过滤因子的值大的复杂谓 词之前;当谓词连接词为0R时,重新排序装置602将过滤因子的值大的复杂谓词排在过滤 因子的值小的复杂谓词之前。
[0126] 如前文中提到的,根据本发明实施例的上述优化设备600同样可以对多个层级的 谓词进行重新排序。需要注意的是,当该优化设备600对于查询语句中预定层级的谓词进 行了重新排序之后,该层级中的各谓词及连接它们的谓词连接词构成的复合谓词仍可能要 参加后续的重新排序,所以需确定该复合谓词的过滤性。在此情况下,可选地,过滤性确定 装置601还可以包括第二过滤性确定单元6013,其对于由预定层级中的各谓词及连接它们 的谓词连接词构成的复合谓词,确定其过滤性,并将该过滤性传递至重新排序装置602。这 里,采用本领域中惯用的方法来确定复合谓词的过滤性。具体地,在谓词连接词为AND的情 况下,第二过滤性确定单元6013将该预定层级中的各个谓词的过滤因子相乘,作为复合谓 词的过滤因子;在谓词连接词为0R的情况下,第二过滤性确定单元6013将该预定层级中各 个谓词的过滤因子相加,作为复合谓词的过滤因子。
[0127] 需要说明的是,第二过滤性确定单元6013将对预定层级中所有谓词的过滤因子 进行相乘或相加运算,而并非仅对被实际进行了位置调整的谓词进行该运算。
[0128] 根据本发明实施例的上述方法和设备根据使用单个谓词对要查询的数据记录进 行实际查询的结果来确定过滤性,因此该过滤性具有高精确性。相应的,基于该过滤性进行 的重新排序考虑了实际的数据,因此是可靠和精确的,从而查询语句在执行时可以获得高 效的执行效率。
[0129] 此外,根据本发明实施例的上述方法和设备使用单个谓词对要查询的数据记录进 行实际查询的结果来确定过滤性,其不仅适用于简单谓词,也适用于复杂谓词。因此,根据 本发明实施例的上述方法和设备可以应用于同时包含简单谓词和复杂谓词的查询,因此具 有较大的适用范围。
[0130] 此外,根据本发明实施例的上述方法和设备在根据过滤性对复杂谓词进行重新排 序时,排除了简单谓词对复杂谓词的过滤性的影响,从而获得了更加准确的排序,使得查询 语句在执行时可以获得更高效的执行效率。
[0131] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
[0132] 以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也 不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技 术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨 在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领 域的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1. 一种用于关系型数据库中的查询语句的优化方法,包括: 对于查询语句中一预定层级中的至少两个复杂谓词中的每一个,基于由仅使用该复杂 谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤性;以及 基于所述过滤性,对该预定层级中的复杂谓词进行重新排序,以使得过滤性强的复杂 谓词排在过滤性弱的复杂谓词之前。
2. 如权利要求1所述的优化方法,还包括: 对于由所述预定层级中的各谓词及连接它们的谓词连接词构成的复合谓词,确定该复 合谓词的过滤性。
3. 如权利要求1或2所述的优化方法,其中所述确定该复杂谓词的过滤性包括: 确定仅使用该复杂谓词查询到的数据记录的序号; 建立对应于该复杂谓词的N元行向量以表示该复杂谓词的过滤性,其中N是所述预定 数据记录的数目,并且在该行向量中,与所述查询到的数据记录的序号对应位置的元素的 值为1,其余位置的元素的值为0。
4. 如权利要求3所述的优化方法,其中所述对该预定层级中的复杂谓词进行重新排序 包括: 对于各个N元行向量,确定其中值为1的元素的数目; 根据该预定层级中的复杂谓词之间的谓词连接词,基于各个N元行向量中值为1的元 素的数目来对该预定层级中的复杂谓词进行重新排序。
5. 如权利要求4所述的优化方法,其中在所述预定层级中存在至少一个简单谓词的情 况下,所述对于各个N元行向量,确定其中值为1的元素的数目包括: 对于每一个所述简单谓词,建立对应的所述N元行向量; 对于每个与所述复杂谓词对应的N元行向量,在谓词连接词为AND时,确定该N元行向 量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1 的元素的数目,作为该N元行向量中值为1的元素的数目;在谓词连接词为OR时,确定该N 元行向量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他 值为1的元素的数目,作为N元行向量中值为1的元素的数目。
6. 如权利要求3所述的优化方法,其中所述确定该复合谓词的过滤性包括: 对于所述预定层级中未确定过滤性的各个谓词,建立对应的所述N元行向量, 对于与所述预定层级中的各个谓词对应的各个N元行向量,逐个元素地执行由所述谓 词连接词代表的逻辑运算,得到用于表示所述复合谓词过滤性的中间N元行向量。
7. 如权利要求1或2所述的优化方法,其中所确定该复杂谓词的过滤性包括: 确定仅使用该复杂谓词查询到的数据记录的数目; 根据所述查询到的数据记录的数目,计算该复杂谓词的过滤因子。
8. 如权利要求7所述的优化方法,其中所述对该预定层级中的复杂谓词进行重新排序 包括: 根据该预定层级中的复杂谓词之间的谓词连接词,基于所述过滤因子来对该预定层级 中的复杂谓词进行重新排序。
9. 如权利要求7所述的优化方法,其中所述确定该复合谓词的过滤性包括: 对于所述预定层级中未确定过滤性的每个谓词,计算该每个谓词的过滤因子,并且基 于该预定层级中各个谓词的过滤因子根据以下的至少一种确定所述复合谓词的过滤性: 在谓词连接词为AND的情况下,将所述预定层级中的各个谓词的过滤因子相乘,作为 所述复合谓词的过滤因子;在所述谓词连接词为OR的情况下,将所述预定层级中的各个谓 词的过滤因子相加,作为所述复合谓词的过滤因子。
10. -种用于关系型数据库中的查询语句的优化设备,包括: 过滤性确定装置,被配置为对于查询语句中一预定层级中的至少两个复杂谓词中的每 一个,基于由仅使用该复杂谓词对预定数据记录进行查询的结果,确定该复杂谓词的过滤 性;以及 重新排序装置,被配置为基于所述过滤性,对该预定层级中的复杂谓词进行重新排序, 以使得过滤性强的复杂谓词排在过滤性弱的复杂谓词之前。
11. 如权利要求10所述的优化设备,其中所述过滤性确定装置包括: 数据记录确定单元,被配置为至少针对所述两个复杂谓词中的每一个,确定仅使用该 复杂谓词查询到的数据记录的序号;以及 第一过滤性确定单元,被配置为至少针对所述两个复杂谓词中的每一个建立对应的N 元行向量以表示该复杂谓词的过滤性,其中N是所述预定数据记录的数目,并且在该行向 量中,与所述查询到的数据记录的序号对应位置的元素的值为1,其余位置的元素的值为 0〇
12. 如权利要求10或11所述的优化设备,其中所述重新排序装置包括: 元素数目确定单元,被配置为对于各个N元行向量,确定其中值为1的元素的数目; 顺序调整单元,被配置为根据该预定层级中的复杂谓词之间的谓词连接词,基于各个N 元行向量中值为1的元素的数目来对该预定层级中的复杂谓词进行重新排序。
13. 如权利要求12所述的优化设备,其中在所述预定层级中存在至少一个简单谓词的 情况下,所述元素数据确定单元被配置为: 对于与所述复杂谓词对应的每个N元行向量,在谓词连接词为AND时,确定该N元行向 量中除了与所述简单谓词的N元行向量中值为0的元素对应位置的元素之外,其他值为1 的元素的数目,作该为N元行向量中值为1的元素;在谓词连接词为OR时,确定该N元行向 量中除了与所述简单谓词的N元行向量中值为1的元素对应位置的元素之外,其他值为1 的元素的数目,作该为N元行向量中值为1的元素。
14. 如权利要求10所述的优化设备,其中所述过滤性确定装置包括: 数据记录确定单元,被配置为至少针对所述两个复杂谓词中的每一个,确定仅使用该 复杂谓词查询到的数据记录的数目;以及 第一过滤性确定单元,被配置为根据所述查询到的数据记录的数目,计算该复杂谓词 的过滤因子。
15. 如权利要求10或14所述的优化设备,其中所述重新排序装置被配置为:根据该预 定层级中的复杂谓词之间的谓词连接词,基于所述过滤因子来对该预定层级中的复杂谓词 进行重新排序。
16. 如权利要求11所述的优化设备,其中所述过滤性确定装置还包括: 第二过滤性确定单元,被配置为对于由所述预定层级中的各谓词及连接它们的谓词连 接词构成的复合谓词,确定该复合谓词的过滤性。
17. 如权利要求16所述的优化设备,其中所述第二过滤性确定单元配置为: 对于与所述预定层级中的各个谓词对应的各个N元行向量,逐个元素地执行由所述谓 词连接词代表的逻辑运算,得到用于表示所述复合谓词的过滤性的中间N元行向量。
18. 如权利要求16所述的优化设备,其中所述第二过滤性确定单元配置为根据以下的 至少一种确定所述复合谓词的过滤性: 在所述预定层级中的谓词连接词为AND的情况下,将该预定层级中的各个谓词的过滤 因子相乘,作为所述复合谓词的过滤因子;在所述谓词连接词为OR的情况下,将该预定层 级中的各个谓词的过滤因子相加,作为所述复合谓词的过滤因子。
【文档编号】G06F17/30GK104216891SQ201310210410
【公开日】2014年12月17日 申请日期:2013年5月30日 优先权日:2013年5月30日
【发明者】杨新颖, 郑淼, 魏可伟, 韦东杰 申请人:国际商业机器公司