CN104285222A - 使用谓词映射器优化查询 - Google Patents

使用谓词映射器优化查询 Download PDF

Info

Publication number
CN104285222A
CN104285222A CN201380023462.9A CN201380023462A CN104285222A CN 104285222 A CN104285222 A CN 104285222A CN 201380023462 A CN201380023462 A CN 201380023462A CN 104285222 A CN104285222 A CN 104285222A
Authority
CN
China
Prior art keywords
row
predicate
inquiry
function
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380023462.9A
Other languages
English (en)
Other versions
CN104285222B (zh
Inventor
S·辛格
R·苏玛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104285222A publication Critical patent/CN104285222A/zh
Application granted granted Critical
Publication of CN104285222B publication Critical patent/CN104285222B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种用于重写查询的计算机实现的方法、计算机程序产品和系统。接收包括查询谓词的查询。确定所述查询谓词包括具有关联的谓词映射器的一个列。使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词。评估具有所述等效谓词的所述查询的成本。响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。

Description

使用谓词映射器优化查询
技术领域
本发明的各实施例涉及使用谓词映射器优化查询。各实施例通过获得从生成列(generated column)到基列的逆映射而优化某些查询。
背景技术
关系数据库管理系统(RDBMS)软件可以使用结构化查询语言(SQL)接口。RDBMS使用关系技术在关系数据库中存储和检索数据。关系数据库被组织成表,这些表包括数据行和列。行可以称为元组或记录或行。数据库通常具有多个表,并且每个表通常具有多个记录和多个列。
可以使用索引访问数据库中的表。索引是到表中的记录的引用(例如,指针)的有序集合。索引用于使用键(即,记录的一个字段或属性,其对应于列)访问表中的每个记录。术语“键”还可以称为“索引键”。如果没有索引,则查找记录需要扫描(例如,线性地)整个表。索引提供一种访问表中的数据的备用技术。在构建表之后,用户可以创建针对表的索引。索引基于表的一个或多个列。
查询可以被描述为基于特定条件的对数据库中的信息的请求。查询通常包括一个或多个谓词。谓词可以被描述为表达或暗示比较运算(例如,A=3)的搜索条件的元素。
关系数据库表中的生成列用于存储预计算值。查询优化器使用生成列替换查询中与生成列的表达式等效的表达式。但是,具有数种情况,其中生成列用于存储用户友好格式的底层数据,并且直接在应用查询中使用。例如,生成列可以是整数基列的0填充字符串表示。尽管整数比较快于字符串比较,但将针对0填充字符串表示执行字符串比较。
发明内容
提供一种用于重写查询的计算机实现的方法、计算机程序产品和系统。接收包括查询谓词的查询。确定所述查询谓词包括具有关联的谓词映射器的一个列。使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词。评估具有所述等效谓词的所述查询的成本。响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
附图说明
现在将仅通过实例的方式参考附图描述本发明的优选实施例,这些附图是:
图1以框图示出根据某些实施例的计算环境;
图2以流程图示出根据某些实施例的用于经由自动检测创建谓词映射器的操作,图2包括图2A和2B;
图3以流程图示出根据某些实施例的用于查询转换的操作,图3包括图3A和3B;
图4示出根据某些实施例的谓词映射器的使用;
图5示出根据某些实施例的实例用户标识(UID);
图6示出根据某些实施例的针对主UID表发出的实例选择语句;
图7示出根据某些实施例的输入查询和优化后的查询;
图8示出根据某些实施例的访问计划比较;
图9以框图示出根据某些实施例的可以使用的计算机体系架构。
具体实施方式
出于示例目的给出了对本发明的不同实施例的描述,但所述描述并非旨在是穷举的或是限于所公开的实施例。在不偏离所述实施例的范围的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。在此使用的术语的选择,旨在最好地解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属技术领域的其它普通技术人员能理解在此所公开的实施例。
从第一方面看,本发明提供一种用于重写查询的方法,包括:通过计算机的处理器接收包括查询谓词的查询;确定所述查询谓词包括具有关联的谓词映射器的一个列;使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;评估具有所述等效谓词的所述查询的成本;以及响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
优选地,本发明提供一种方法,其中所述列包括生成列。
优选地,本发明提供一种方法,还包括:在规则库中查找定义所述生成列的函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种方法,还包括:确定定义所述生成列的函数可逆;使用数学方程式查找所述函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种方法,其中确定所述函数可逆进一步包括:确定所述函数是一对一的。
优选地,本发明提供一种方法,其中所述谓词映射器包括模式对象(schema object),并且定义两个或更多列之间的关系。
优选地,本发明提供一种方法,其中由用户创建所述谓词映射器。
优选地,本发明提供一种方法,其中由数据库引擎创建所述谓词映射器。
从另一方面看,本发明提供一种用于重写查询的计算机程序产品,计算机程序产品包括:计算机可读存储介质,其中包含计算机可读程序代码,其中当由计算机的处理器执行时,所述计算机可读程序代码被配置为执行以下操作:接收包括查询谓词的查询;确定所述查询谓词包括具有关联的谓词映射器的一个列;使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;评估具有所述等效谓词的所述查询的成本;以及响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
优选地,本发明提供一种计算机程序产品,其中所述一个列包括生成列。
优选地,本发明提供一种计算机程序产品,其中当由所述计算机的所述处理器执行时,所述计算机可读程序代码被配置为执行以下操作:在规则库中查找定义所述生成列的函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种计算机程序产品,其中当由所述计算机的所述处理器执行时,所述计算机可读程序代码被配置为执行以下操作:确定定义所述生成列的函数可逆;使用数学方程式查找所述函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种计算机程序产品,其中当由所述计算机的所述处理器执行时,用于确定所述函数可逆的计算机可读程序代码被配置为执行以下操作:确定所述函数是一对一的。
优选地,本发明提供一种计算机程序产品,其中所述谓词映射器包括模式对象,并且定义两个或更多列之间的关系。
优选地,本发明提供一种计算机程序产品,其中由用户创建所述谓词映射器。
优选地,本发明提供一种计算机程序产品,其中由数据库引擎创建所述谓词映射器。
从另一方面看,本发明提供一种用于重写查询的计算机系统,包括:处理器;以及耦合到所述处理器的存储设备,其中所述存储设备具有存储在其上的程序,并且其中所述处理器被配置为执行程序的指令以便执行操作,其中操作包括:接收包括查询谓词的查询;确定所述查询谓词包括具有关联的谓词映射器的一个列;使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;评估具有所述等效谓词的所述查询的成本;以及响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
优选地,本发明提供一种计算机系统,其中所述一个列包括生成列。
优选地,本发明提供一种计算机系统,其中所述操作还包括:在规则库中查找定义所述生成列的函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种计算机系统,其中所述操作还包括:确定定义所述生成列的函数可逆;使用数学方程式查找所述函数的反函数;以及使用所述反函数创建所述谓词映射器。
优选地,本发明提供一种计算机系统,其中用于确定所述函数可逆的操作进一步包括:确定所述函数是一对一的。
优选地,本发明提供一种计算机系统,其中所述谓词映射器包括模式对象,并且定义两个或更多列之间的关系。
优选地,本发明提供一种计算机系统,其中由用户创建所述谓词映射器。
优选地,本发明提供一种计算机系统,其中由数据库引擎创建所述谓词映射器。
图1以框图示出根据某些实施例的计算环境。服务器计算机100耦合到数据库150和规则库180。服务器计算机100包括数据库管理系统(DBMS)110。DBMS包括数据库引擎120、查询优化器130和一个或多个谓词映射器140。所述数据库存储一个或多个表160和一个或多个索引170。规则库180将函数映射到其反函数以便生成反函数。
在某些实施例中,谓词映射器140创建从一个列到一个或多个其它列的映射。在某些实施例中,一个列和另一个列来自同一个表。在某些其它实施例中,另一个列是生成列。在某些实施例中,一个列与另一个列之间具有关系,该关系复杂并且不能表示为生成列表达式;在这些情况下,使用诸如数据库触发器之类的技术封装操作以便生成另一个列。在某些实施例中,谓词映射器140创建从生成列到一个或多个其它基列的映射。查询优化器130利用谓词映射器140重写查询。
在某些实施例中,用户创建谓词映射器140以便定义从一个列到另一个列的映射。此类用户创建的谓词映射器140可用于数据库引擎120。在某些备选实施例中,例如当查询谓词包括生成列时,数据库引擎120创建谓词映射器140。
图2以流程图示出根据某些实施例的用于经由自动检测创建谓词映射器的操作。图2包括图2A和2B。在创建表时,数据库引擎120检测存在生成列并且提取定义生成列的函数。规则库180描述常用函数及其反向映射。针对每个生成列执行图2的处理。
将智能内置于DBMS 110中,以便当用户提供CREATE TABLE语句并且CREATE TABLE语句具有生成列时,数据库引擎120尝试生成定义该生成列的函数的反函数。这将适用于数值列,其中数学函数定义生成列。因此,数据库引擎创建系统生成的谓词映射器140。
在图2中,控制在方框200开始,数据库引擎120接收具有生成列的“CREATE TABLE”数据描述语言(DDL)语句。各实施例将逻辑内置于数据库引擎120中,以便每当用户发出具有生成列定义的CREATETABLE DDL语句时,数据库引擎120都尝试查找反函数并且使用该反函数生成谓词映射器140。
作为一个实例,以下CREATE TABLE语句具有生成列col2。作为自动检测的一部分,DBMS 110尝试判定Col2和Col1之间的关系是否为一对一,并且如果是,则尝试生成Col2的反函数并且创建谓词映射器140。
CREATE TABLE T1
(
Col1integer,
Col2integer generated always as(col1+10)/2)
)
在方框202,数据库引擎120在规则库180中搜索定义生成列的函数f1的反函数。在某些实施例中,规则库180存储公知/已证明的数学函数及其反函数。如果生成列与规则库180中的现有函数匹配,则可以使用来自规则库本身的反函数,而不必经历生成反函数的过程。完善的函数和反函数的一些实例是:
函数f(x)         反函数
X+a              y-a
a-x              a-y
在方框204,数据库引擎120判定是否找到函数f1的反函数。如果是,则处理从方框204(图2A)继续到方框210(图2B),否则,处理继续到方框206。
在方框206,数据库引擎120判定定义生成列的函数f1是否可逆。在某些实施例中,通过使用对判定函数f1是否为一对一的归纳做出该判定。如果函数f1可逆,则处理从方框206(图2A)继续到方框208(图2B),否则,处理完成。一对一可以描述为数学术语。并非所有的函数都具有反函数。当且仅当生成列集中的每个元素对应于基列中的唯一值时,函数才可逆。因此,在生成反函数之前,数据库引擎120检查定义生成列的函数是否满足该条件。这可以使用数学归纳法确定。
在方框208,数据库引擎120使用数学方程式查找函数f1的反函数。在方框210,数据库引擎120使用函数f1的反函数生成谓词映射器。在方框212,数据库引擎120存储谓词映射器(例如,在系统目录中)。
以下是可以如何针对定义生成列的函数gen_col获得反函数的一个实例,如下所示:
gen_col=(base_col+10)/2
数据库引擎120确定函数gen_col可逆,因为该函数是一对一的。以下伪代码表示数据库引擎120以数学方式查找函数gen_col的反函数而执行的处理:
Rewrite the function as:y=(x+10)/2
Multiply both sides by the denominator:2y=x+10
Bring all terms involving x to the Left Hand Side(LHS)and other
terms to the Right Hand Side (RHS):x= 2y-10
Solving for x:x=2y–10
然后,数据库引擎120确定函数gen_col的反函数为:
(2*gen_col-10)
在其中从生成列到一个或多个基列的映射包括复杂逻辑的情况下,用户可以显式地创建谓词映射器140。在查询转换期间,数据库引擎120使用该谓词映射器进行谓词替换。
图3以流程图示出根据某些实施例的用于查询转换的操作。图3包括图3A和3B。在某些实施例中,图3的操作表示要在查询优化的查询重写阶段期间应用的查询转换逻辑。在某些实施例中,将查询提交到数据库引擎120时,查询优化器130标识查询中包括生成列的任何谓词,并且尝试通过查询重写优化该查询。
在图3中,控制在方框300开始,查询优化器130接收包括查询谓词的查询。在方框302,查询优化器130判定查询谓词是否包括与谓词映射器关联的一个列。如果是,则处理继续到方框304,否则,处理结束。所述查询谓词可以描述为原始查询谓词,并且所述一个列是原始查询谓词中的列。在某些实施例中,所述列是生成列,并且查询优化器130判定对于生成列是否存在谓词映射器(即,查询优化器130检查生成列是否具有与其关联的谓词映射器)。
在方框304,查询优化器130使用提供从原始查询谓词中的一个列到另一个列的映射的谓词映射器,针对查询谓词生成等效谓词。在某些实施例中,查询优化器130生成等效谓词,其中左手侧(LHS)是基列,并且右手侧(RHS)是谓词映射器返回的值。具体地说,基于谓词映射器中提供的细节,生成使用一个或多个基列的等效谓词。在方框306,查询优化器130评估使用等效谓词的查询的成本。从方框306(图3A),处理继续到方框308(图3B)。在方框308,查询优化器130判定成本是否是最优的。如果是,则处理继续到方框310,否则,处理结束。查询优化器130是基于成本的(其中成本映射到运行查询所需的时间),并且成本包括处理成本和输入/输出(I/O)成本。在某些实施例中,使用等效谓词的查询的最优成本指以下成本:小于不使用等效谓词的查询(即,原始查询)的成本。如果查询优化器130使用函数映射器以等效谓词替换原始谓词,并且具有等效谓词的成本更小,则使用等效谓词。
在方框310,查询优化器130重写查询以便使用等效谓词替换查询谓词。在方框312,数据库引擎120执行重写后的查询。
查询优化器130和谓词映射器140应用于广泛的优化情况,包括使用更有效数据类型的比较(数值与字符串)、分解谓词以便限制扫描范围,以及索引使用。查询优化器130执行从生成列到一个或多个基列的反向映射。因为映射反向,所以数据库引擎120中存在尝试将生成列隐式地映射到一个或多个基列的处理逻辑。
仅为了增强理解,在此提供各种实例。
在客户情况1中,唯一ID是整数数据,但唯一ID表示为使用0填充的字符串以便具有统一、固定长度的表示。字符串表示是基于整数值的生成列。字符串表示对于应用/用户而言已知并且在查询中使用。但是,在该实例中,客户想要在查询处理期间使用整数列以实现性能优势。以下是具有实例查询和重写后的查询的实例表“TAB1”:
实例表:
TAB1,其具有列uid整数,并且Unique_id是varchar列,其生成为
Unique_Id=lpad(uid,6,'0')
实例查询:
select*from tab1 where Unique_Id='000012011'
重写后的查询:
select*from tab1 where uid=12011
在客户情况2中,整数值以十六进制(“hex”)值格式使用,存储为字符串。应用在查询中使用hex格式,但是整数比较产生更好的性能结果。以下是具有实例查询和重写后的查询的实例表“TAB2”:
实例表:
TAB2,其具有列cid整数,并且CUST_ID是varchar列,其生成为
CUST_ID=hex(cid)
实例查询:
select*from tab2 where CUST_ID=0x'94A'
重写后的查询:
select*from tab2 where cid=2378
客户情况3是银行实例,其中客户的唯一账户标识符(ID)包括数个组成部分(例如区域代码、分行代码和序列号)的组合并且表示为生成列。当客户数量非常大,并且不同区域和分行数量相比之下非常小时,将用于account_id上的谓词分解成用于各组成部分上的谓词涉及扫描更少的页并且提高查询性能。以下是具有实例查询和重写后的查询的实例表“TAB3”:
实例表:
TAB3,其具有列rc char(2)、bc char(3)、slno整数,并且ACCOUNT_ID是varchar列,其生成为ACCOUNT_ID=concat(rc,bc,slno)
实例查询:
select*from tab3where ACCOUNT_ID='112221234'
重写后的查询:
select*from tab3where rc='11'and bc='222'and slno=1234
在客户情况4中,将基列上的复合函数的结果存储为生成列,并且在基列上定义索引。在此,如果用户提供具有生成列的谓词,则各实施例使用基列并且利用在基列上定义的索引来重写谓词。以下是具有实例查询和重写后的查询的实例表“TAB4”:
实例表:
TAB4,具有在其上包含索引的sales列以及生成为0.2*sales+10000的BONUS列
实例查询:
select*from tab4 where BONUS>20000
重写后的查询:
select*from tab4 where sales>50000
谓词映射器140可以被描述为将表中的生成列映射到一个或多个基列的新模式对象。谓词映射器可以由数据库引擎120生成,或者可以由用户使用数据描述语言(DDL)语句显式定义。谓词映射器140可以用于定义任何列之间的关系(例如,基于生成列的关系)。
某些实施例使用以下语法创建谓词映射器:
CREATE PREDICATE MAPPER UIDPMap
FOR uid TO flag,nuid ON uid_master
RETURN NEWRHS=
(substr(OLDRHS,1,1),INT(substr(OLDRHS,2,11))
图4示出根据某些实施例的谓词映射器的使用。使用通过创建语句410创建的谓词映射器,将原始查询400重写为查询420。
某些实施例使用以下语法创建用户定义的谓词映射器:
CREATE PREDICATE MAPPER
<name>
FOR<src_gen_col>
[TO<base_col1>,<base_col2>,<base_col3>,...]
ON<table_name>
RETURN NEWRHS=(function1(OLDRHS),
[function2(OLDRHS),function3(OLDRHS),...]);
其中:
<name>标识谓词映射器对象
<src_gen_col>是生成列的名称
<base_col1>、<base_col2>、<base_col3>、...是在其上定义生成列的一个或多个基列的列表。这是可选的。如果未提供,则数据库引擎120按照一个或多个基列的列表在生成列定义中出现的顺序隐式地获得该列表。
<table_name>是具有生成列的表
NEWRHS是将包含新谓词的RHS值的关键字
OLDRHS是将包含旧谓词的RHS值的关键字
function1、function2、function3...是内置或用户定义的函数
以下是创建客户情况1的谓词映射器的一个实例,其中使用内置函数INT查找新谓词的RHS:
CREATE PREDICATE MAPPER pmap1FOR unique_id ON tab1
RETURN NEWRHS=INT(OLDRHS)
使用该谓词映射器定义,数据库引擎120使用谓词uid=12210替换谓词unique_id='000012210'。
以下是创建客户情况2的谓词映射器的一个实例,其中使用用户定义的函数hex_to_dec查找新谓词的RHS:
CREATE PREDICATE MAPPER pmap2FOR cust_id ON tab2
RETURN NEWRHS=hex_to_dec(OLDRHS)
使用该谓词映射器,数据库引擎120使用谓词cid=9802替换谓词cust_id=x'264A'。
以下是创建客户情况3的谓词映射器的一个实例,其中使用内置函数substr返回值列表,每个基列一个值:
CREATE PREDICATE MAPPER pmap3FOR account_id TO rc,
bc,slno ON tab3
RETURN NEWRHS=(substr(OLDRHS,1,2),
substr(OLDRHS,3,3),substr(OLDRHS,6,4))
使用该谓词映射器,数据库引擎120使用谓词rc='11',bc='222'以及slno='1234'替换谓词account_id=″112221234'。
某些实施例适用于用户标识(UID),其中UID是不包括字母字符的数字(因为特定字母依赖于特定脚本/语言和文化)。在某些实施例中,针对UID使用12个十进制数字。版本号:a1=0表示个体,而a1=1表示实体等。如果使用2-9数字(a1=2、3…9)指定UID,则具有800亿个数字。UID可以是使用0填充的数字,以使a2...a11具有固定长度。在某些实施例中,UID认证是具有严格响应时间要求的操作。图6示出根据某些实施例的针对主UID表610发出的实例选择语句600。在主UID表610中,UID是varchar。图7示出根据某些实施例的输入查询600和优化后的查询700。图8示出根据某些实施例的访问计划比较。具体地说,将输入查询600的访问计划800与优化后的查询700的访问计划810相比较,以便显示成本改善了25%。较低的成本意味着较快的查询执行时间。
各实施例扩展SQL以便支持称为谓词映射器的提供从生成列到基列的映射的新模式对象。此外,使用各实施例,查询优化器130重写查询以便实现更好的性能。
各实施例通过在数据库中获得逆映射来优化查询,方法是:扩展SQL以便创建称为谓词映射器的新模式对象,从而提供从生成列到基列的映射。各实施例接收对数据库引擎120的查询并判定查询中的谓词是否包括生成列,并且如果是,则使用基列(多个)和与该列关联的谓词映射器中提供的细节生成等效谓词。各实施例评估使用等效谓词的查询的成本,并且在查询重写阶段期间利用谓词映射器以便生成备选谓词,评估备选谓词的成本,以及基于该成本确定性能最好的查询执行计划。各实施例经由自动检测并基于与列关联的反函数来生成谓词映射器。
各实施例重写查询以便利用生成列。各实施例使用DDL从用户处获得列之间的关系,并且让查询优化器130使用该信息产生更好的查询计划。各实施例使得查询处理器能够知道在基列上使用备选但等效谓词可以被证明更有效。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、固态存储器、磁带或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作处理(例如,操作或步骤),以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
实现所述操作的代码还可以以硬件逻辑或电路(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)实现。硬件逻辑可以耦合到处理器以便执行操作。
相互通信的设备不必持续地相互通信,除非另外明确指出。此外,相互通信的设备可以直接或通过一个或多个媒介间接地通信。
具有若干相互通信的组件的实施例的描述并非暗示所有此类组件都是必需的。相反,描述了多种可选的组件以例示本发明的更多可能实施例。
此外,尽管可以按照连续的顺序来描述过程步骤、方法步骤、算法等,但是此类过程、方法和算法可以被配置为以替代顺序工作。换句话说,可以描述的步骤的任何序列或顺序并不一定指示要求按此顺序执行步骤。可以按可实现的任何顺序执行在此描述的过程的步骤。此外,可以同时执行某些步骤。
当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。同样,当在此描述多个设备或物品(无论它们是否协作)的情况下,将显而易见的是,可以使用单个设备/物品来代替多个设备或物品,或者可以使用不同数量的设备/物品来代替所示数量的设备或程序。设备的功能和/或特性可以备选地由一个或多个其它未明确描述为具有此类功能/特性的设备来体现。因此,本发明的其它实施例不必包括设备本身。
流程图的示出的操作显示某些事件以特定的顺序发生。在各备选实施例中,某些操作可以以不同的顺序被执行、修改或删除。此外,可以向上述逻辑添加操作并仍然符合所描述的实施例。此外,此处所述的操作可以顺序地发生或者某些操作可以被并行地处理。更进一步,操作可以由单个处理单元或由分布式处理单元来执行。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
术语“一个实施例”、“实施例”、“多个实施例”、“所述实施例”、“所述多个实施例”、“一个或多个实施例”、“某些实施例”和“某一实施例”指“本发明(多个)的一个或多个(但不是所有)实施例”,除非另外明确指出。
术语“包含”、“包括”、“具有”及其变型指“包括但不限于”,除非另外明确指出。
列举的项目的列表并非暗示任何或所有的项目互相排斥,除非另外明确指出。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对本发明实施例的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最优地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
图9示出根据某些实施例的可以使用的计算机体系架构900。服务器计算机100可以实现计算机体系架构900。计算机体系架构900适合于存储和/或执行程序代码,并且包括至少一个通过系统总线920直接或间接连接到存储元件904的处理器902。存储元件904可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。存储元件904包括操作系统905和一个或多个计算机程序906。
输入/输出(I/O)设备912、914(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器910与系统相连。
网络适配器908也可以被连接到系统以使数据处理系统能够通过中间专用或公共网络变得与其它数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是当前可用类型的网络适配器908中的少数几种。
计算机体系架构900可以连接到存储装置916(例如,任何类型的存储设备;非易失性存储区域,例如磁盘驱动器、光盘驱动器、磁带驱动器等)。存储装置916可以包括内部存储设备或附加的或网络可访问存储装置。存储装置916中的计算机程序906可以加载到存储元件904中,并且由处理器902以所属技术领域已知的方式执行。
计算机体系架构900可以包括少于所示的组件、未在此示出的其它组件,或者所示组件和其它组件的某种组合。计算机体系架构900可以包括所属技术领域已知的任何计算设备,例如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化设备、存储控制器等。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
出于示例和说明目的给出了本发明实施例的上述描述。其并非旨在是穷举的或将实施例限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在实施例的范围并非由此详细描述来限制,而是由此后所附的权利要求来限制。以上说明、实例和数据提供了对实施例的组成部分的制造和使用的完整描述。由于可以在不偏离本发明的精神和范围的情况下做出许多实施例,所以实施例存在于此后所附的权利要求或随后提交的任何权利要求或其等效物之内。

Claims (24)

1.一种用于重写查询的方法,包括:
通过计算机的处理器接收包括查询谓词的查询;
确定所述查询谓词包括具有关联的谓词映射器的一个列;
使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;
评估具有所述等效谓词的所述查询的成本;以及
响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
2.根据权利要求1的方法,其中所述列包括生成列。
3.根据权利要求2的方法,还包括:
在规则库中查找定义所述生成列的函数的反函数;以及
使用所述反函数创建所述谓词映射器。
4.根据权利要求2的方法,还包括:
确定定义所述生成列的函数可逆;
使用数学方程式查找所述函数的反函数;以及
使用所述反函数创建所述谓词映射器。
5.根据权利要求4的方法,其中确定所述函数可逆进一步包括:
确定所述函数是一对一的。
6.根据权利要求1的方法,其中所述谓词映射器包括模式对象,并且定义两个或更多列之间的关系。
7.根据权利要求1的方法,其中由用户创建所述谓词映射器。
8.根据权利要求1的方法,其中由数据库引擎创建所述谓词映射器。
9.一种用于重写查询的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,其中包含计算机可读程序代码,其中当由计算机的处理器执行时,所述计算机可读程序代码被配置为执行以下操作:
接收包括查询谓词的查询;
确定所述查询谓词包括具有关联的谓词映射器的一个列;
使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;
评估具有所述等效谓词的所述查询的成本;以及
响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
10.根据权利要求9的计算机程序产品,其中所述一个列包括生成列。
11.根据权利要求10的计算机程序产品,其中当由所述计算机的所述处理器执行时,所述计算机可读程序代码被配置为执行以下操作:
在规则库中查找定义所述生成列的函数的反函数;以及
使用所述反函数创建所述谓词映射器。
12.根据权利要求10的计算机程序产品,其中当由所述计算机的所述处理器执行时,所述计算机可读程序代码被配置为执行以下操作:
确定定义所述生成列的函数可逆;
使用数学方程式查找所述函数的反函数;以及
使用所述反函数创建所述谓词映射器。
13.根据权利要求12的计算机程序产品,其中当由所述计算机的所述处理器执行时,用于确定所述函数可逆的所述计算机可读程序代码被配置为执行以下操作:
确定所述函数是一对一的。
14.根据权利要求9的计算机程序产品,其中所述谓词映射器包括模式对象,并且定义两个或更多列之间的关系。
15.根据权利要求9的计算机程序产品,其中由用户创建所述谓词映射器。
16.根据权利要求9的计算机程序产品,其中由数据库引擎创建所述谓词映射器。
17.一种用于重写查询的计算机系统,包括:
处理器;以及
耦合到所述处理器的存储设备,其中所述存储设备具有存储在其上的程序,并且其中所述处理器被配置为执行所述程序的指令以便执行操作,其中所述操作包括:
接收包括查询谓词的查询;
确定所述查询谓词包括具有关联的谓词映射器的一个列;
使用提供从所述一个列到另一个列的映射的所述谓词映射器,针对所述查询谓词生成等效谓词;
评估具有所述等效谓词的所述查询的成本;以及
响应于确定所述查询的所述成本是最优的,重写所述查询以便使用所述等效谓词替换所述查询谓词。
18.根据权利要求17的计算机系统,其中所述一个列包括生成列。
19.根据权利要求18的计算机系统,其中所述操作还包括:
在规则库中查找定义所述生成列的函数的反函数;以及
使用所述反函数创建所述谓词映射器。
20.根据权利要求18的计算机系统,其中所述操作还包括:
确定定义所述生成列的函数可逆;
使用数学方程式查找所述函数的反函数;以及
使用所述反函数创建所述谓词映射器。
21.根据权利要求20的计算机系统,其中用于确定所述函数可逆的操作进一步包括:
确定所述函数是一对一的。
22.根据权利要求17的计算机系统,其中所述谓词映射器包括模式对象,并且定义两个或更多列之间的关系。
23.根据权利要求17的计算机系统,其中由用户创建所述谓词映射器。
24.根据权利要求17的计算机系统,其中由数据库引擎创建所述谓词映射器。
CN201380023462.9A 2012-05-07 2013-05-02 用于重写查询的方法和系统 Expired - Fee Related CN104285222B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/465,769 US20130297586A1 (en) 2012-05-07 2012-05-07 Optimizing queries using predicate mappers
US13/465,769 2012-05-07
PCT/IB2013/053489 WO2013168058A1 (en) 2012-05-07 2013-05-02 Optimizing queries using predicate mappers

Publications (2)

Publication Number Publication Date
CN104285222A true CN104285222A (zh) 2015-01-14
CN104285222B CN104285222B (zh) 2018-03-02

Family

ID=49513427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380023462.9A Expired - Fee Related CN104285222B (zh) 2012-05-07 2013-05-02 用于重写查询的方法和系统

Country Status (3)

Country Link
US (2) US20130297586A1 (zh)
CN (1) CN104285222B (zh)
WO (1) WO2013168058A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017091925A1 (zh) * 2015-11-30 2017-06-08 华为技术有限公司 数据查询的方法、装置和数据库系统
CN107004034A (zh) * 2015-02-12 2017-08-01 华为技术有限公司 将列与函数关联以优化查询执行的方法和查询优化服务器
CN109074373A (zh) * 2016-03-28 2018-12-21 华为技术有限公司 通过访问小数据查询大数据
CN110637293A (zh) * 2017-05-31 2019-12-31 国际商业机器公司 数据分析系统中搜索查询的验证
CN110651264A (zh) * 2017-04-25 2020-01-03 米雷克斯简易股份公司 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10706047B2 (en) * 2012-10-22 2020-07-07 Sap Se Boolean content search
US9229983B2 (en) 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US9588978B2 (en) 2013-09-30 2017-03-07 International Business Machines Corporation Merging metadata for database storage regions based on overlapping range values
US9519687B2 (en) 2014-06-16 2016-12-13 International Business Machines Corporation Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
US10042887B2 (en) 2014-12-05 2018-08-07 International Business Machines Corporation Query optimization with zone map selectivity modeling
KR102385908B1 (ko) 2015-08-11 2022-04-13 삼성전자주식회사 스토리지 장치로부터 데이터를 검색하는 방법
US10387404B1 (en) 2015-12-15 2019-08-20 Progress Software Corporation Synthesized predicate driven index selection for partitioned table
US10776846B2 (en) * 2016-07-27 2020-09-15 Nike, Inc. Assortment optimization
US10552390B2 (en) * 2017-01-06 2020-02-04 International Business Machines Corporation Root cause analysis of performance problems
US10776358B2 (en) 2017-09-21 2020-09-15 International Business Machines Corporation Using a unique index to remove group by based on set analysis
US10810199B2 (en) * 2018-08-30 2020-10-20 International Business Machines Corporation Correlation of input and output parameters for a function in a database management system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1670729A (zh) * 2004-03-18 2005-09-21 微软公司 使用隐含谓词的改善的查询优化器
CN101093493A (zh) * 2006-06-23 2007-12-26 国际商业机器公司 数据库查询语言转换方法、转换装置、数据库查询系统
US20080059410A1 (en) * 2006-08-24 2008-03-06 International Business Machines Corporation Method for accelerating range queries using periodic monotonic properties of non-monotonic functions
US20100030728A1 (en) * 2008-07-29 2010-02-04 Oracle International Corporation Computing selectivities for group of columns and expressions
CN102479255A (zh) * 2010-11-19 2012-05-30 国际商业机器公司 用于优化数据库查询的方法和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789071B1 (en) 2001-04-20 2004-09-07 Microsoft Corporation Method for efficient query execution using dynamic queries in database environments
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
US20040220896A1 (en) 2003-04-30 2004-11-04 International Business Machines Corporation System and method for optimizing queries on views defined by conditional expressions having mutually exclusive conditions
US7240078B2 (en) 2003-11-25 2007-07-03 International Business Machines Corporation Method, system, and program for query optimization with algebraic rules
US7930277B2 (en) 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
US20070067262A1 (en) * 2005-09-22 2007-03-22 Bhashyam Ramesh Method and system for optimizing user database queries
US7693820B2 (en) 2006-04-21 2010-04-06 Microsoft Corporation Use of materialized transient views in query optimization
US7877374B2 (en) 2006-12-01 2011-01-25 Microsoft Corporation Statistics adjustment to improve query execution plans
US8554760B2 (en) 2009-10-07 2013-10-08 Hewlett-Packard Development Company, L.P. System and method for optimizing queries
CN101963993B (zh) * 2010-10-21 2012-08-29 江苏科技大学 一种数据库单表记录快速查找的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1670729A (zh) * 2004-03-18 2005-09-21 微软公司 使用隐含谓词的改善的查询优化器
CN101093493A (zh) * 2006-06-23 2007-12-26 国际商业机器公司 数据库查询语言转换方法、转换装置、数据库查询系统
US20080059410A1 (en) * 2006-08-24 2008-03-06 International Business Machines Corporation Method for accelerating range queries using periodic monotonic properties of non-monotonic functions
US20100030728A1 (en) * 2008-07-29 2010-02-04 Oracle International Corporation Computing selectivities for group of columns and expressions
CN102479255A (zh) * 2010-11-19 2012-05-30 国际商业机器公司 用于优化数据库查询的方法和系统

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107004034A (zh) * 2015-02-12 2017-08-01 华为技术有限公司 将列与函数关联以优化查询执行的方法和查询优化服务器
CN107004034B (zh) * 2015-02-12 2021-01-29 华为技术有限公司 将列与函数关联以优化查询执行的方法和查询优化服务器
WO2017091925A1 (zh) * 2015-11-30 2017-06-08 华为技术有限公司 数据查询的方法、装置和数据库系统
CN107251013A (zh) * 2015-11-30 2017-10-13 华为技术有限公司 数据查询的方法、装置和数据库系统
CN107251013B (zh) * 2015-11-30 2020-02-14 华为技术有限公司 数据查询的方法、装置和数据库系统
US10885034B2 (en) 2015-11-30 2021-01-05 Huawei Technologies Co., Ltd. Data query method and apparatus, and database system
CN109074373A (zh) * 2016-03-28 2018-12-21 华为技术有限公司 通过访问小数据查询大数据
CN110651264A (zh) * 2017-04-25 2020-01-03 米雷克斯简易股份公司 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行
CN110651264B (zh) * 2017-04-25 2023-08-08 米雷克斯简易股份公司 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行
CN110637293A (zh) * 2017-05-31 2019-12-31 国际商业机器公司 数据分析系统中搜索查询的验证
CN110637293B (zh) * 2017-05-31 2023-04-04 国际商业机器公司 数据分析系统中搜索查询的验证

Also Published As

Publication number Publication date
CN104285222B (zh) 2018-03-02
US8812491B2 (en) 2014-08-19
US20130297587A1 (en) 2013-11-07
WO2013168058A1 (en) 2013-11-14
US20130297586A1 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
CN104285222A (zh) 使用谓词映射器优化查询
US7945557B2 (en) Method, system, and program for query optimization with algebraic rules
US9607099B2 (en) Query conditions-based security
US7499910B2 (en) Detecting and processing cache hits for queries with aggregates
US7933894B2 (en) Parameter-sensitive plans for structural scenarios
US7444332B2 (en) Strict validation of inference rule based on abstraction environment
US20070112827A1 (en) Abstract rule sets
US7440945B2 (en) Dynamic discovery of abstract rule set required inputs
US20080228716A1 (en) System and method for accessing unstructured data using a structured database query environment
US20050289167A1 (en) Impact analysis in an object model
CA2427209A1 (en) Optimization of queries on views defined by conditional expressions having mutually exclusive conditions
US7542962B2 (en) Information retrieval method for optimizing queries having maximum or minimum function aggregation predicates
US20110270866A1 (en) Semantic model association between data abstraction layer in business intelligence tools
US20070250472A1 (en) Query condition building using predefined query objects
CN104160398A (zh) 结构化大对象(lob)数据
US20110082856A1 (en) System and method for optimizing queries
US20080016047A1 (en) System and method for creating and populating dynamic, just in time, database tables
US6304876B1 (en) Method for enforcing integrity constraints in a database table using an index
US8548985B2 (en) Method and process of query optimization to a given environment via specific abstraction layer domain knowledge
Wu et al. Answering XML queries using materialized views revisited
Kechar et al. Bringing together physical design and fast querying of large data warehouses: a new data partitioning strategy
US20100205197A1 (en) Two-valued logic database management system with support for missing information
US10977284B2 (en) Text search of database with one-pass indexing including filtering
US20200394193A1 (en) Text search of database with one-pass indexing
US9064000B1 (en) Operations over nested relationships using operators

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

Granted publication date: 20180302

Termination date: 20200502

CF01 Termination of patent right due to non-payment of annual fee