CN1670729A - 使用隐含谓词的改善的查询优化器 - Google Patents
使用隐含谓词的改善的查询优化器 Download PDFInfo
- Publication number
- CN1670729A CN1670729A CNA2005100095642A CN200510009564A CN1670729A CN 1670729 A CN1670729 A CN 1670729A CN A2005100095642 A CNA2005100095642 A CN A2005100095642A CN 200510009564 A CN200510009564 A CN 200510009564A CN 1670729 A CN1670729 A CN 1670729A
- Authority
- CN
- China
- Prior art keywords
- predicate
- index
- inquiry
- implicit
- original
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- 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/24537—Query rewriting; Transformation of operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种改善的查询优化器使用隐含谓词。该系统便于允许查询优化组件将额外的谓词引入到查询中,额外的谓词便于:给出与原始查询相同的结果;如由传送到优化组件的规则支配的那样使用额外谓词-这些规则指定新的谓词是等价谓词(替代老的谓词)还是隐含谓词(其中保留老的谓词);被视作是基于成本的另选谓词,且若不使用予以舍弃;与索引的利用相联系;并能被视作标准和多值索引。
Description
技术领域
本发明涉及数据库系统,尤其涉及用于这类系统的查询优化。
背景技术
数据库系统中的查询是以高级、说明性(非过程性)语言陈述的,它们需要被翻译成过程性执行计划。查询优化的目的是研究此说明性请求被翻译成过程性计划的方式,并在被研究的那些中选择最有效的计划。期望的查询执行计划能包括一系列原始数据库操作符,并通常按最小估计执行成本来选择。传统的查询优化系统的一个缺点涉及在有限大小的列的值上的比较。数据库索引在用作对该索引的搜索关键词的字段大小方面具有实际的限制。这就在能用作索引的搜索关键词的列上提出了限制。在一个实现中,索引不能具有长度大于900字节的关键词。例如,当x>900时不能被索引的类型VARCHAR(X)的列。这些数据类型被标记为不可索引类型。另一缺点关系到优化过程的计算复杂性和所选计划的执行有效性。而且除了这些障碍,索引选择的标准方法由于只考虑纯粹对照其它值比较一列(例如不是对照其它值比较列的函数)的谓词而受限制。
需要一种改善的查询优化机制,在由查询谓词隐的表达式上调节(leverage)索引。
发明内容
下面给出本发明的简化概述,以便提供对本发明某些方面的基本理解。此概述不是本发明的广泛综述。它不试图标识本发明的关键/重要的要素,或勾划出本发明的范围。其唯一目的是以简化方式提出本发明的某些概念,作为下面给出的更详细描述的序言。
在一个方面,这里揭示及要求保护的本发明是一个系统,它便于允许查询优化组件从另一谓词条件推导出在索引的列上的简单比较。这是通过将至少便于下述方法的额外谓词引入到查询中实现的。额外的谓词给出与原始查询相同的结果,且如由传送到优化组件的规则规定地使用。这些规则规定,新的谓词是等价谓词(它将替代老的谓词)还是隐含谓词(其中老的谓词被保留)。额外的谓词还被看作基于成本的另选方案,且若无用时被舍弃。谓词也能与索引的利用相联系,并能看作标准和多值的索引。
为此,本发明包括一种在数据存储库中便于查询优化的系统,它包括一查询组件,它接收拟对照数据存储库中的数据来处理的查询,该查询包括一原始谓词。该系统还包括一谓词组件,它将原始谓词转换成一个或多个新谓词,包括隐含谓词、等价谓词,和残留(residual)谓词中的至少一个,隐含谓词或等价谓词均对照数据来处理,以返回最佳解,使总的估算成本大大降低。
在本发明的另一方面中,该系统采用分类器形式的人工智能,使本发明的一个或多个方面自动化。
在本发明的另一方面,提供一过程,用于估算简单比较上的基数(cardinality),从而改善了准确度。这比在复杂的条件或谓词上执行那样的估算更节省成本。
为实现上述和相关目的,在此结合下面叙述及附图来描述本发明的某些示例方面。然而,这些方面仅是能采用本发明的原理的各种方法少数一些的表示,而本发明旨在包括所有那些方面及其等效方面。通过下面结合附图的描述,本发明的其它优点及新颖特征将变得显而易见。
附图说明
图1示出依照本发明的系统。
图2示出本发明的一个过程的流程图。
图3示出依照本发明的系统。
图4示出按本发明处理标准索引的方法的流程图。
图5示出按本发明用于具有由重写规则生成的隐含谓词的查询的初始操作符树及最终操作符树。
图6示出按本发明处理多值索引的系统的方框图。
图7示出按本发明处理多值索引的方法的流程图。
图8示出按本发明采用人工智能的系统。
图9示出用于执行所揭示的体系结构的计算机的方框图。
图10示出按本发明的示例计算环境的示意框图。
具体实施方式
现在参考附图描述本发明,其中,在所有图中,类似的标号用于参考类似的元素。在下面描述中,为了说明的目的列出许多特定细节,以提供对本发明的透彻理解。然而大家明白,本发明可以没有这些特定细节地实施。在另外例子中以框图形式示出众知的结构,以便于描述本发明。
在本专利申请中用的术语“组件”和“系统”指的是计算机相关的实体:硬件、硬件与软件的组合,软件,或执行中的软件。例如,组件能是,但不限于,在处理器上运行的进程、处理器、对象、可执行程序(executable)、执行的线程、程序、和/或计算机。作为说明,在服务器上运行的应用程序和服务器都能是组件。一个或多个组件能驻留在进程和/或执行的线程中,且一个组件能位于一台计算机或分布在二台或多台计算机上。
这里使用的术语“推论”或“推理”一般指从一组通过事件和/或数据捕捉的观察中推理或推断系统、环境和/或用户的状态的过程。例如,能采用推论来标识特定的上下文或动作,或产生各状态的概率分布。推论能是概率性的,即,基于数据及事件的考虑,计算所关注的状态的概率分布。推论也指用于从一组事件和/或数据组成更高级事件的技术。那样的推论导致从一组被观察的事件和/或存储的事件数据构造新的事件或动作,而不论那些事件是否在非常接近的时间内互相关,以及那些事件和数据是否来自一个或若干个事件和数据源。
现参考图1,示出依照本发明的系统100。提供一优化组件102,用于对照数据存储库104优化搜索。优化组件102能是与数据存储库104相关联的查询优化器,依照本发明,该优化器带有增强性能。本发明能借助于被称为优化器的DBMS(数据库管理系统)编译器的一部分来实现。优化器是DBMS编译器的处理组件,它最初估算搜索查询,并为DBMS的执行器产生关键词表达式。优化组件102接收拟对照数据存储库104的数据来处理的查询106。下面的描述处理不能直接对照数据存储库来处理的查询,即,搜索项不直接与存储库的表数据对齐的情况。因此需要进一步的处理以获得搜索结果。
为此,优化组件102还包括接收查询106的查询组件108。查询组件108从查询106提取一个或多个查询谓词,将该一个或多个查询谓词传送到谓词组件110。在此描述中,谓词是断言关于值的事实的表达式。若表达式估算成TRUE(真),则相关的条件满足。若表达式估算成FALSE(假),则条件不满足。这里最初对照数据应用谓词而没有结果。按本发明,谓词组件110分析不能匹配的谓词,并引入一个或多个新的谓词,它们大大增加了成功搜索的可能性。一个或多个新的谓词112能包括下列中的一个或其任何组合:隐含谓词114,等价谓词116,和残留谓词118。
本发明允许优化组件102将一个或多个额外的(或新的)谓词112引入到查询中,它们便于:给出与原始查询同样的结果;能如由传送到优化组件102的规则规定地使用,那些规则规定新的谓词是否为等价谓词(将替代老的谓词)或隐含谓词(其中老的谓词被保留);被视作基于成本的另选方案,并在无用时舍弃;与索引利用相联系;以及能视作标准的和多值的索引。包括基于成本的优化器120,作为优化组件的一部分,以便于确定,一个或多个新谓词112能否减少了与完成成功搜索相关联的开销。
索引的可利用性的传统限制能降低查询的性能。解决此问题的一个仍有缺陷的工作循环(workaround)如下。例如,假设在表T1,T2中分别存在称为T1.c_charmax和T2.c_charmax的类型VARCHAR(MAX)的两列。这些列都是不可索引的,但在计算的列T1.c_ccolumn上有一索引,它是由HASH(T1.c_charmax)计算的。因为T1.c_charmax=T2.c_charmax意味着HASH(T1.c_charmax)=HASH(T2.c_charmax),并且因此T1.c_ccolumn=HASH(T2.c_charmax),则后一个谓词能显式地包括在查询中,且此显式重写查询的结果将是下面两个查询,并在每个产生同样结果方面是等价的。
原始查询 新显式查询
SELECT T1.c_charmax SELECT T1.c_charmax
FROM T1,T2 FROM T1,T2
WHERE T1.c_charmax=T2.c_charmax WHERE T1.c_charmax=T2.c_charmax
AND Tl.c_ccolumn=HASH(T2.c_charmax)
此方法表明,当一列具有不可索引类型,有可能在其类型是不可索引的列的某一函数上(如HASH,前缀)定义一索引。一旦定义了那样的索引,有可能利用T1.c_ccolumn上的索引。然而,这有若干缺点。由于强迫程序员基于具体的考虑写出额外的谓词,这不利于查询语言的“非过程性”。涉及T1.c_ccolumn上的索引的计划可能不是最优的,或者T1.c_ccolumn上的索引对程序员是未知的,或者可能存在另外的重写此谓词的方法。在任何这些情况中,查询执行被强加上估算额外的和不必要的项的工作。
现参考图2,示出了本发明的一个过程的流程图。虽然为了解释简单起见,这里以流程图形式示出的一个或多个方法被示出和描述成一系列动作,然而可以理解,本发明不受这些动作的次序的限制,因为按本发明,某些动作能以不同于这里描述的次序发生和/或与其它动作同时发生。例如,本领域的技术人员能理解,方法能另选地表示成如在状态图中一系列互相有关的状态或事件。此外,为实现按本发明的方法,不是所有示出的动作是必需的。
在200,接收了不能直接搜索的未匹配的查询。在202,优化组件将查询谓词缩减成合取式(conjunct),其中之一能潜在地由现有规则使用。在204,优化组件用现有规则分析合取式,并选择最兼容规则。在206,优化组件返回与最兼容规则相匹配的隐含或等价谓词。在208,基于隐含或等价规则处理查询。在210,处理搜索结果,并判断该结果是否可接受。若否,流程进到212,舍弃查询。过程随即到停止块。
若初始结果可被接受,则流程从210到214,以确定在搜索中是否需要进一步细化(refinement)。若否,流程到216,以确定结果是否可接受。若否,在212查询被舍弃。若是,过程在停止块终止。另外,若需要进一步细化,流程从214到218,那里,在对隐含或等价谓词返回的结果上引入并处理残留谓词。在216,如前一样地校验结果的可接受性。
现参考图3,示出按本发明的系统300。将按照标准索引的隐含规则来描述该系统操作。这里,优化组件102还与元数据引擎302交互,后者与具有一组规则的规则组件304相关联。优化组件102取出查询谓词并将其分解成合取式。在索引选择过程中分析用于比较的各个合取式组。优化组件102要求元数据引擎302存在对给定列或对给定列上的函数的隐含规则。为提供此信息,优化组件102向引擎302发送要与该列(或列上的函数)比较的表达式,和能被利用的标准索引的列表。元数据引擎302访问规则组件304,并用试验性替代(或隐含的比较谓词)的列表作出响应。优化组件102进而试图将隐含谓词添加到原始谓词,并搜索最佳索引解。若给定的隐含谓词利用索引,则返回结果作进一步处理。然而,若隐含谓词不利用索引,则优化组件102将其移除,使得不导致额外的开销。
现参考图4,示出按本发明处理标准索引的方法的流程图。在400,采用本发明的优化组件。在402,查询的原始谓词被缩减成合取式。在404,在索引选择期间分析该合取式。在406,请求被放到用于给定列或给定列上的函数的隐含规则的元数据引擎上。在408,在从该引擎接收响应之前,表达式被发送到能与该列(或列上的函数)比较的引擎。此外,在410,能被利用的标准索引的列表被发送到该引擎。在412,引擎用试验性谓词替代(或隐含的比较谓词)的列表作出响应。在414,优化组件试图将隐含的谓词添加到原始谓词。在416,优化组件搜索最佳搜索解。在418,优化组件较验,给定的隐含谓词是否利用索引。在420,系统判断,是否能利用索引。若是,在424,采用该谓语,流程到停止块。然而,若不能利用索引,流程到422,在那里,优化组件移除该隐含谓词,以不导致额外开销。过程随即达到停止块。
现参考图5,示出按本发明对带有由重写规则生成的隐含谓词的查询的初始操作符树500和最终操作符树502。考虑在此例中,存在用于标准索引的隐含规则,称为Rule1,它表示为if p1=@p then Prefix(p1,n)=Prefix(@p,n)。还考虑存在如下创建的表:
CREATE TABLE Table1(id int,plvarchar(500),PrfxCompCol as Prefix(p1,10),
AnotherCompCol as AnotherFunct(p1)
CREATE INDEX IndexPrefix ON Table1(PrfxCompCol)
CREATE INDEX IndexAnother ON Table1(AnotherCompCol)
最后考虑下面的查询:
SELECT id FROM Tablel WHERE p1=@p2
这反映在初始操作符树500中,其中Project(ID)分枝到Select节点,该节点分枝到Table1节点和EQ节点。EQ节点又分枝到P1和@P2节点。
对谓词p1=@p2的隐含规则的生成在三个步骤中完成。首先利用合取式确定,上述合取式是与表l的不可索引列还是与表1的列的函数或方法比较。所述列(p1)被称为候选列。第二步,搜索索引的列。利用该候选列构筑索引的计算列的列表。若该候选列是可索引的,它还包括那些索引。在此例中得出,在列PrfxCompCol和AnotherCompCol上存在索引,因为两者均利用p1。对应的表达式是prefix(p1,10)和AnotherFunct(p1)。第三,搜索替代。采用特别的元数据函数,使用下列参数得出可能的隐含谓词
参数 | 值 |
cmpType | (枚举器。即这是相等比较) |
pexprAnalyzed | 对应于Tablel.p1的表达式 |
pexprBound | 对应于@p1的表达式 |
pdrgCid | 带有表列PrfxCompCol和AnotherCompCol的数组 |
pdrgExprIdxCols | 带有PrfxCompCol和AnotherCompCol的表达式的数组 |
dbi | Tablel.p1的数据库 |
元数据函数将返回零个或更多个隐含谓词的表达式。在此例中,将是单个表达式PrfxCompCol=Prefix(@p2,10)。注意此表达式与Rule1的“then”部分中的表达式相同。
Ifp1=@p then Prefix(p1,n)=Prefix(@p,n),
差别在于Prefix(p1,n)已被其等价列PrefxCompCol改变,且规则的右端项从计算的列的表达式挑选了Prefix的长度(n=10)。
这反映在最终操作符树502中,在那里隐含的谓词包括AND节点,右EQ节点,和PrfxCompCol及Prefix(@P2,10)的子节点。注意,对应于索引的计算列的PrfxCompCol(P1,10)已被对应的计算列(PrfxCompCol)替代。还注意,Prefix(@P2,10)已从PrfxCompCol的表达式取前缀的长度(即10)。
现参考图6,示出按本发明处理多值索引的系统600的方框图。此处的优化组件102包括规则组件602,它便于对各个操作符(如Select,Join等)引入新的特别的调查规则。在这些特别规则中,将分析各个合取式。优化组件102将十分类似上述地要求元数据引擎存在规则,向引擎302传送信息。即,优化组件102向引擎302发送要与该列(或列上的函数)比较的表达式,和拟被利用的多值索引的列表。元数据引擎302用试用性替代(带有包含嵌套的查询的谓词)的列表作出响应。最后,优化组件102将替代包括在查询中,并在简化新的表达式和移除嵌套的查询后,将产生对Select(或Join等)的新的另选操作。
现参考图7,示出按本发明处理多值索引的方法的流程图。在700,采用本发明的优化组件。在702,查询原始谓词被缩减到合取式。在704,在索引选择过程中分析合取式。在706,优化组件为各个操作符提供特别的调查规则。在708,用特定的规则分析各个合取式。在710,优化组件还要求元数据引擎存在规则,然而,在从引擎接收响应之前,将要与该列(或列上的函数)比较的表达式发送到该引擎。此外,在712,能利用的多值索引的列表被发送到该引擎。在714,引擎用试验性谓词替代(带有包含嵌套的查询的谓词)的列表作出响应。在716,优化组件将替代包括在查询中,并简化了表达式。在718,优化组件移除嵌套的查询。在720,优化组件生成新的另选查询。过程随即达到停止块。
处理诸如空间数据类型那样复杂的数据类型的应用程序常常具有专门的索引要求,这用常规的索引是不能满足的。本发明通过放松关于索引的某些方面及假设,使用户能构筑在服务器的B-树索引(如与SQL Server相关联的那些)的顶部,并允许用户创建扩展的索引。它还提供一方法,将谓语或操作符映射到使用扩展的索引的表达式。
对于扩展的索引,如空间、全文本或临时数据库等应用程序提出特别的索引要求,它们不能容易用B-树满足,且它们需要创建某些中间结构,在其上转而能构筑标准的索引。标准索引在每一个表的行上至多有一个条目。上述应用程序在每行上需要一个以上的索引条目-由表值(Table-Valued)UDF生成的多个条目。例如,为全文本设计的扩展的索引可使用表值UDF,它在应用到文本字段时返回一个表,其条目对应于文本中每个字。除了正创建的列的描述外,扩展查询的定义需要使用其生成标识表值UDF,有时需要指定拟包括在Tab UDF中的一组与应用有关的参数。不正规地说,扩展的索引等价于索引表值计算的列。
对于查询重写规则,这些规则(1)连结到一比较操作符,它涉及某一数据类型或指定的UDF的表列;以及(2)规定一新的布尔表达式,它是原始比较表达式的结果(或其等价表达式)。新表达式能成功地利用索引(扩展的或非扩展的)的存在,并由优化器使用来产生诸另选方案。查询重写规则应用到UDF还是应用到类型可关联到标准索引或扩展的索引,并能表示隐含谓词或等价谓词。
查询重写规则的表达式能力取决于它们是与标准的还是扩展的索引关联。尽管扩展索引重写规则能是布尔表达式,然而标准索引规则有限得多。
对标准索引的重写规则能包括在现有的查询优化器规则的代码中,优化器规则调查在Select和Join中索引查找(和索引联合)的利用。对扩展的索引的重写规则能由查询优化器中的新调查考虑在内。
如这里所指出的,调查在Select和Join中索引查找的使用采用了一个类,它将Select(或Join)的比较表达式分解成合取式。接着,分析每个本地(native)合取式,以确定它是否能用作索引查找操作的一部分。最后,分析所有的索引,并对每个索引列出能在索引查找操作中使用的合取式,或者它们被一个索引的内容所覆盖的合取式。当该类找到涉及某组索引的索引解时,它对每个索引生成索引表达式,跟踪能由这些索引的每一个利用的最初生成的合取式。在任务结束处,对不能由一个索引考虑的所有合取式生成残留谓词。
构成本发明的扩展的列表如下:
索引扩展方案:对创建索引扩展方案提供支持,然后允许基于该扩展方案创建索引。索引扩展方案规定如下:索引对应于数据类型的关键词列数据类型;一组参数(通常是域专用的);以及一表值函数名,它应由索引生成和维持机制使用,以对被索引的每个列的值生成索引条目。这里对索引的假设的主要放松在于被索引的每列能生成带有一个或多个列的一个或多个索引行,从而产生表值函数来生成索引值。
扩展的索引:使用如上定义的索引扩展方案在列上创建索引的能力。
转换规则:索引对有效地估算某些操作符是有用的。标准的索引允许比较操作的有效估算。类似地,扩展的索引能用于有效地估算域专用操作符或可应用于复杂数据类型的比较。为支持此规则,SQL Server支持将针对索引的数据类型的谓词(或布尔值函数)映射到能使用索引的值(即在索引的值上应用的表值函数的结果)估算的表达式。
在可扩展性方面,本发明受由下面表示限制:(i)将索引值映射到列表值,以及(ii)将谓词映射到可在SQL中对照对应的列表值表达的另选的列表表达式。
扩展的索引
常规的次级索引具有下面的列的组:
-正被索引的列(如IC),以及在此索引行对应的基本表中唯一标识行的列的组。对基本表的每一行在索引中存在一个行。
-使用基本表的群集关键词列或使用对没有群集索引的表的基本行的具体标识符唯一地标识基本行的列。
在扩展的索引中,前一组,即被索引的诸列,在它们使用被索引的列的用户指定的函数生成的意义上是不同的。此外,因为用户指定的函数是表值函数,对基本表的每一行在索引中能存在一个以上行。
创建/维护扩展的索引方案
创建扩展的索引是两步的过程。第一步创建封装下列定义的索引扩展方案:
-被索引的列的数据类型。
-在创建通常是域专用的索引中有用的附加参数。
-用于生成索引的表值函数以及索引输入(被索引的列及附加参数)到表值函数的参数的映射。
-除了查询优化器在基本表的主关键词列上创建的主索引外,应索引的表值索引的列。
使用新的CREATE INDEX EXTENSION语句创建索引扩展。
一旦创建了索引扩展方案,仅是此扩展方案的实例的实际索引能通过对CREATE INDEX语句的增强来创建。
下面给出对CREATE INDEX EXTENSION语句的句法及语义。
CREATE INDEX EXTENSION[extension_schema.]extension_name
FOR({@column_param_name
[column_type_schema.]column_data_type} [,…])
WITH PARAMETERS({ @param_name
[param_type_schema .] param_data_type }
[,…])
USING[table_function_schema.] table_function_name ({@arg_name
[,…]}
[ON(column_name[,…])]
规则
column_Param_name指定了作为被索引的数据值的主索引参数。
column_data_type是此参数的数据类型。column_data_type能是由SQL Server支持的任何标量数据类型(除时间标记外),或用户定义的类型。column_type_schema能可任选地对各UDT指定。
@param,hame指定附加参数的名称而param_data_type指定它们的对应数据类型。指定的数据类型能是SQL Server支持的标量类型(除时间标记外)或用户定义类型。
[table_function_schema.]table_function_name应在创建索引扩展的同一数据库中指定现有的表值函数。此表值函数是确定性的。
在USING子句的自变量表中所有参数名来自在FOR子句(如@coumn_Param_name)或WITH PARAMETERS子句(如@param_name)中定义的参数名的列表。这就在给定索引扩展的列数据值和附加参数的情况建立了如何调用表值函数的绑定。
索引扩展方案的创建产生了表值函数上的隐含方案绑定。因此,只要使用表值函数的索引扩展方案存在,该表值函数不能被舍弃或更换。
在ON子句后指定的列的列表应是由指定的表值函数的结果返回的列名。除了在基本表的主关键词上总是由查询处理器创建的索引外,此列表指定了这些列上的一个附加索引。
例l
对于在空间数据类型规范的空间情况
--首先创建表值函数
CREATE FUNCTION st_KeyGen(@g dbo.Geom,@minx int,@miny int,@maxx int,
@maxy int,@max_tiles int,@max_depth int)
RETURNS TABLE(key nvarchar(4000))
EXTERNAL NAME spatialAssembly:spatialfunctions::st_KeyGen
--现使用此表值函数创建索引扩展方案
CREATE INDEX EXTENSION SpatialIndexScheme FOR(@p dbo. Geom)
WITH PARAMETERS @minx int,@miny int,@maxx int,@maxy int,
@max_tiles int,@max_depth int)
USING dbo.st_KeyGen(@p,@minx,@miny,@maxx,@maxy,
@max_tiles,@max_depth)
ON (key)
舍弃索引扩展方案
句法
DROP[[extension_schema.]extension_name
规则
若在基于此索引扩展方案的数据库中存在任何扩展的索引,则它不能被舍弃。
创建/管理扩展的索引
一旦创建了索引扩展方案,能使用那样创建的索引扩展方案创建一个或多个索引。CREATE INDEX指定了被索引的列,且还将拟提供的附加参数的值提供给被指定为索引扩展方案的一部分的表值函数。
句法
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON{table|view }(column[ASC|DESC][,…])
[USING [index_extension_schema].index_extension_name]
[WITH index_option[,…]]
[ON filegroup]
index_option::=
{PARAMETERS=(param_value [,…])
PAD_INDEX|
FILLFACTOR=fillfactor|
IGNORE_DUP_KEY|
DROP_EXISTING|
STATISTICS_NORECOMPUTE|
SORT_IN_TEMPDB
}
规则
列的数据类型应与索引扩展的@colum_param_name的数据类型相同。
在PARAMETERS index_option中提供的参数值是T-SQL文字且在次序和数据类型兼容性方面应与在对应的索引扩展的PARAMETERS子句中指定的参数具有一对一的对应关系。
在索引扩展方案中也允许标量UDF(用户定义的函数),在此情况,索引的值将是该UDF的结果,而不是列值本身。
实现注解
索引能如执行下列语句那样通过创建和维护索引视图来生成:
CREATE VIEW <system-generated-view>
AS
SELECT<primary-key-columns-of-base-table>,i.*
FROM<base-table>APPLY(select * from<table-valued-
function>(<index-col>,…)i)
上述视图将使用不唯一的群集索引来索引。
CREATE INDEX<system-generated-index-name>/*不唯一的索引*/
ON<system-generated-view>(<primary-key-columns-of-t>)
WITH<supplied-options-in-original-create-index>
给定此<system-generated-view>,注意下述等价语句为真:
<table-valued-function>(X)=
SELECT<columns-of-table-valued-function>
FROM<system-generated-view>
WHERE v.<primary-key>=t.<primary-key>
其中t.<primary-key>是对基本表的主关键字的引用。
除上面索引外,如由ON子句指定的,查询处理器也将创建一附加的索引。
例(续)
CREATE TABLE Suppliers(id int PRIMARY KEY,name nvarchar(60),coveragedbo. Geom)
CREATE INDEX spatialindex ON Suppliers(coverage)
USING SpatialIndexScheme
WITH PARAMETERS=(0,0,100,100,5,5),
FILLFACTOR=60
如每个上述实现注解所示,这将促使SQL Server生成下述索引视图:
CREATE VIEW spatialindex
AS
SELECT id,i.*
FROM Suppliers APPLY dbo.st_KeyGen(s.coverage,0,0,100,100,5,5)i
CREATE CLUSTERED INDEX<internal-name>
ON internalview(ID)
WITH FILLFACTOR=60
舍弃扩展的索引
只要没有使用扩展的索引的规则,就能使用当今存在的DROP INDEX语句舍弃该扩展的索引。
隐含/等价规则
支持按照另一布尔值表达式指定复杂的谓词函数的逻辑隐含谓词或等价谓词的规则,它使用与如上述用于创建扩展的索引相同的表值函数。在此情况,查询处理器(QP)能使用预计算的表值函数(如在扩展的索引中持久保存的)估算此布尔表达式。仅当该规则是隐含规则并且当布尔值表达式为真时,需要估算原始谓词函数。
句法
CREATE RULE[rule_schema.]rule_name
TYPE{EQUIVALENCE|IMPLICATION }
FOR[original_function_schema.] original_function_name
(argument_list)
WITH INDEX TYPE
[index_extension_schema.]index_extension_name ON
@index_argument
AS[(]boolean_expression[)]
argument_list::=
@argument_name[,…]
规则
标量用户定义函数如下指定:
[original_function_Schema.]original_function_name应存在于当前数据库中。
@index_argument应匹配argument_list中的自变量之一。
boolean_expression能包含对匹配argument_list中的自变量或指定的索引扩展方案的参数(在PARAMETERS子句中定义)的自变量(带‘@’前缀的标识符)的引用。
boolean_expression引用由指定的index_extension_scheme使用的表值函数。
若指定TYPE EQUIVALENCE,则规则表达一完全的等价关系,且查询优化器不需要在结束处调用原始的函数。若指定TYPE IMPLICATION,查询优化器在结束处需要调用原始的函数,即使指定的布尔表达式为真。
查询重写逻辑
若下列条件满足,QP对用户定义的标量函数的给定调用使用隐含规则。对该列存在WITH INDEX TYPE子句中指定的类型的扩展索引,它是此函数的自变量,且该自变量的位置匹配由@index_argament指定的位置。
若使用该隐含规则,它如下地重写函数调用:
original-function-name(…,T.col…)
其中T.col是其上存在扩展的索引的索引的列,则上述函数被重写成对应于该规则的boolean_expression,其中在boolean_expression中表值函数的每次出现由下述表的表达式对照对应的扩展索引所替代:
(SELECT*FROM<IndexedView>i
WHERE i.<Primary Key>=T.<primary Key>)
查询优化器将个别地考虑所有另选方案(且在同一替代中不使用一次以上),并挑选开销最少的一个。
例1(续):
CREATE RULE Spatialrule
TYPE IMPLICATION
FOR dbo.st_Intersects(@p1 dbo.Geom,@p2 dbo.Geom)
WITH INDEX TYPE Spatial IndexScheme
AS
EXISTS(SELECT*
FROM st_keyGen(@p1,@minx,@miny,@maxx,@maxy,@max_tiles,
@max_depth)i JOIN
GetRanges(stBoundingBox(@p2,@max_tiles,@max_depth))r ON
i.key BETWEEN(r.keymin and r.keymax)
UNION ALL
SELECT*
FROM st_keyGen(@p1,@minx,@miny,@maxx,@maxy,@max_tiles,
@max_depth)i JOIN
GetAncestors(stBoundingBox(@p2,@max_tiles,
@max_depth)r ON
i.key=r.key
)
用户查询:
SELECT*
FROM Suppliers s
WHERE st_Intersects(s.Coverage,@inputArea)
被重写成:
SELECT*
FROM Suppliers s
WHERE EXISTS(
SELECT*
FROM(SELECT* FROM spatialIndex i
WHERE i.ID=s.ID)t1
JOIN GetRanges(stBoundingBox(@p2,5,5))r ON
t1.key BETWEEN(r.keymin and r.keymax)
UNION ALL
SELECT *
FROM(SELECT*FROM spatialIndex i
WHERE i.ID=s.ID)t2
JOIN GetAncestors(stBoundingBox(@a_geometry,5,5)r ON
t2.key=r.key
)
AND st_Intersects(s.CoVerage,@InputArea)
例2
考虑全文本索引方案,它依赖于索引表值函数ft_Index(Gentextal)的结果并返回形式(word,frequency,location)的一组行,其中对在textval中每个word(字)的每次出现存在一条目。每行包含有关word、其frequency(频率)(在文档中出现的次数)、和location(位置)(textval中字的发生所位于的偏移)。表值函数能如下创建:
CREATE FUNCTION ft_IndexGen(@textval nvarchar(MAX))
RETURNS TABLE(word nvarchar(300),frequency int,location int)
EXTERNAL NAME FullTextLib:IndexGen::ft_IndexGen
索引的扩展如下创建:
CREATE INDEX EXTENSION FulltextIndexScheme
FOR(@p nvarchar(MAx))
USING dbo.ft_IndexGen(@p)
考虑谓词CONTAINS(@textval,<phrase>),它仅当<phrase>中所有的字在@texrval中至少出现一次时返回真。下述规则的逻辑是,仅当@phrase中没有不在@textval中出现的字时,CONTAINS(@textval,@phrase)为真。
CREATE RULE ftRule
TYpE EQUIVALENCE
FOR dbo.CONTAINS(@p1 nvarchar(MAx),@p2 nvarchar(300))
WITH INDEX TYPE FulltextIndexSchema ON@p1
AS
NOT EXISTS(
SELECT word
FROM ft_IndexGen(@p2)i2
WHERE i2.word NOT IN
(SELECT word FROM ft_IndexGen(@p1))
)
现考虑表Candidates(CandidatedID,LastName,FirstName,ContactPhone,Resume),且Resume列具有使用FulltextIndexScheme在其上创建的索引。
查找其resume(摘要)中带有字‘distributed database(分布式数据库)’的所有Candidate(候选者)的查询如下:
SELECT *
FROM Candidates
WHERE dbo.CONTAINS(Resume,′Distributed Database′)
给定了在CONTAINS函数上的扩展的索引和隐含规则,上述查询由优化器如下地重写:
SELECT *
FROM Candidates c
WHERE NOT EXISTS(
SELECT word
FROM ft_IndexGen(′Distributed Database′)i2
WHERE i2.word NOT IN
(SELECT word
FROM(SELECT * FROM ftIndex i
WHERE i.CandidateID=c.CandidateID))
)
现参考图8,示出了按本发明利用人工智能组件(分类器802)的系统800。本发明(如就选择而言)能采用各种基于人工智能的方案来实现本发明的各个方面。例如,确定如何及何时按用户对隐含规则加权的过程能通过一自动分类器系统和过程而得到方便。那样过程能通过使用约束来实施。
分类器是将输入属性矢量x=(x1,x2,x3,x4,…xn)映射到该输入属于一类别的置信度的函数,即f(x)=confidence(class)。那样的分类能利用基于概率和/或统计的分析(如,分解成分析效用和成本)来预测或推论用户希望自动执行的动作。
支持矢量机(SVM)是能采用的分类器的例子。SVM通过寻找可能输入的空间中的超曲面而操作,该超曲面试图将触发准则从非触发事件中分离。直观地,这使得对于接近而又非等同于训练数据的试验数据分类正确。其它引导的和非引导的模型分类方法包括如单纯(naive)贝叶斯(Bayes)、贝叶斯网络、决策树,且能采用提供不同的独立性模式的概率分类模型。这里使用的分类也包括用于开发优先级模型的统计回归分析。
从本说明书中容易理解,本发明能采用显式训练(如通过广义训练数据)以及隐式训练(如通过观察用户的行为,接收外来信息)的分类器。例如,SVM经过在分类器构造函数和特征选择模块中的学习和训练阶段来配置。因此,分类器能用于自动地执行若干功能。例如,不管该应用是否为不可索引类型的数据类型,分类器802能用于确定原始的谓词是否太复杂或运行开销太大(单独确定或结合基于开销的优化器120确定),但是,隐含的或等价的谓词运行的开销小得多,分类器802能首先使用隐含的或等价的谓词估算搜索及结果。然后在运行更复杂或开销大的搜索之前能细化复杂的搜索。
也能采用分类器802来使用选择性和/或基数(Cardinality)估算上的附加信息。因此,隐含规则能用于缩小搜索范围,但也通过使用如基数估算那样的估算。随后能舍弃这些估算,以便不再执行。
隐含的谓词能用于改善基数估算。最后,这导出更有效的执行计划。准确的基数估算进一步支持估算更可靠的执行成本,并从而选择更健壮的执行计划。例如,若通过隐含规则知道,P1等价于P2,且P2更易于估算,则已获得健壮性。此外,若P1隐含P2,但不等价于它,则通过估算满足P2的行能在满足P1的行上确定上界。这也是有价值的信息。
也能采用分类器802,基于关于被搜索的数据的类型的参数、搜索的时间、被搜索的数据的大小、数据是否分布式的、和查询表达式的复杂性作出推论,此处仅举几个例子。
现参考图9,示出可用于执行所揭示的体系结构的计算机的方框图。为了对本发明的各方面提供附加的环境,图9和下面讨论旨在提供在其中能实现本发明的各个方面的合适的计算环境900的简单而一般的描述。虽然本发明在上面已经以能在一台或多台计算机上运行的计算机可执行指令的一般上下文的形式予以描述,本领域的技术人员认识到,本发明能结合其它程序模块和/或作为软硬件组合来实现。
通常,程序模块包括执行特定任务或实现特定的抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员认识到,本发明的方法能用其它计算机系统配置实施,包括:单处理器或多处理器计算机系统、小型机、大型主机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费者电子设备等,其每一种能在操作上耦合到一个或多个相关设备。
示出的本发明的诸方面也能在分布式计算环境中实施,其中某些任务由经过通讯网络连接的远程处理设备执行。在分布式计算环境中,程序模块能位于本地的或远程的存储器储存设备中。
计算机通常包括各种计算机可读介质。计算机可读介质是能由计算机访问的任何可用介质,并包括易失和非易失介质,可移动及不可移动介质。例如,但不限于,计算机可读介质能包括计算机存储介质和通信介质。计算机存储介质包括以任何方法和技术实现的易失和非易失、可移动及不可移动介质,用于存储如计算机可读指令、数据结构、程序模块、或其它数据那样的信息。计算机存储介质包括,但不限于,RAM、ROM、EEPROM,闪存或其它存储技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储器或其它磁存储设备、或能用于存储所希望的信息并能由计算机访问的任何其它介质。
通信介质通常在如载波或其它传输机制那样的已调制数据信号中包含计算机可读指令、数据结构、程序模块、或其它数据,并包括任何信息传送介质。术语“已调制数据信号”指的是以在信号中编码的方式设置或改变的一个或多个特征的信号。例如,但不限于,通信介质包括如有线网络或直线连接的有线介质,和如声学、RF、红外和其它无线介质那样的无线介质。上述的任何组合也能包括在计算机可读介质的范围中。
再次参考图9,示出用于实现本发明的各方面的示例环境900,它包括计算902,计算机902包括处理单元904、系统存储器906和系统总线908。系统总线将包括,但不限于,系统存储器906的各系统组件耦合到处理单元904。处理单元904是各种可购买的处理器的任一种。也能采用双微处理器和其它多处理器体系结构作为处理单元904。
系统总线908能是若干种总线结构的任一种,它们还能互连到存储器总线(带或不带存储控制器)、外围总线、和使用各种可购买的总线体系结构的任一种的局部总线。系统存储器906包括只读存储器(ROM)910和随机存储器(RAM)912。基本输入/输出系统(BIOS)存储在非易失存储器910中,如ROM、EPROM、EEPROM,该BIOS包含如在起动时帮助在计算902的各元件之间传输信息的基本例程。RAM 912还能包括如静态RAM那样的高速RAM,用于高速缓存数据。
计算机902还包括:内部硬盘驱动器(HDD)914(如EIDE、SATA),此内部硬盘驱动器914也能配置成在合适的机箱(未示出)外使用、软盘驱动器(FDD)916(如用于读写可移动软盘918)、以及光盘驱动器920(如读CD-ROM盘922,或读写如DVD那样的其它大容量光介质)。硬盘驱动器914、磁盘驱动器916、和光盘驱动器920能分别通过硬盘驱动器接口924、磁盘驱动器接口926和光盘驱动器接口928连接到系统总线。用于外部驱动器实现的接口924包括通用串行总线(USB)和IEEE 1394接口技术的至少一个或两者。
这些驱动器和它们相关联的计算机可读介质提供了数据、数据结构、计算机可执行指令等的非易失存储。对计算机902,驱动器和介质适用于存储以合适的数字格式的任何数据。虽然上述的计算机可读介质的描述指的是HDD、可移动软磁盘和如CD或DVD那样可移动光介质,本领域的技术人员理解,在示例的操作环境中也能使用由计算机可读的任何其它类型的介质,如zip驱动器、盒式磁带、闪存卡、卡式带等,而且任何那样的介质能包含用于执行本发明的方法的计算机可执行指令。
在驱动器和RAM 912中能存储若干程序模块,包括操作系统930、一个或多个应用程序932、其它程序模块934和程序数据936。在RAM 912中也能高速缓存操作系统、应用程序、模块和/或数据的全部或部分。
可以理解,本发明可用各种可购买的操作系统或操作系统的组合来实现。
用户能通过一个或多个有线/无线输入设备,如键盘938和诸如鼠标940那样的定位设备,向计算机902输入命令和信息。其它输入设备(未示出)能包括麦克风、IR遥控器、操纵杆、游戏垫、输入笔、触摸屏等。这些和其它输入设备常常通过连接到总线908的输入设备接口942连接到处理单元904,但能通过其它接口连接,如并行端口、IEEE 1394串行端口、USB端口、IR接口等。
监视器944或其它类型的显示设备也通过如视频适配器946那样的接口连接到系统总线908。除监视器944之外,计算机通常包括其它外围输出设备(未示出),如扬声器、打印机等。
计算机902能使用经过有线或无线通信到一台或多台如远程计算机948那样的远程计算机的逻辑连接,在网络环境中操作。远程计算机948能是工作站、服务器计算机、路由器、个人计算机、便携计算机、基于微处理器的娱乐设备、对等设备或其它公共网络节点,并通常包括关于计算机902描述的许多或所有元件,虽然为简单起见只示出存储器设备950。画出的逻辑连接包括到局域网(LAN)952和/或如广域网(WAN)954那样更大的网络的有线/无线连接。那样的LAN和WAN网络环境在办公室和公司内是常见的,并有助于企业范围的计算机网络,如内联网,所有这些可以连接到如因特网那样的全球通讯网络。
当在LAN网络环境中使用时,计算机902通过有线和/或无线通信网络接口或适配器956连接到局域网952。适配器952有助于到LAN 952的有线或无线通信,LAN也能包括布置在其上的无线接入点,用于与无线适配器956通信。当在WAN网络环境使用时,计算机902能包括调制解调器958,或连接到LAN上的通信服务器,或具有用于通过如因特网等WAN 954建立通信的其它装置。可以是内置或外接的有线或无线的调制解调器958通过串行接口942连接到系统总线908。在网络环境中,关于计算机902画出的诸程序模块或其部分能储存在远程存储器/储存设备950中。可以理解,示出的网络连接是示例性的,能使用在计算机之间建立通信链路的其它装置。
计算机902可用于与在操作上布置在无线通信中的任何无线设备或实体通信,如打印机、扫描仪、台式和/或便携计算机、便携数字助理、通信卫星、与无线可检测的标记相关的任何装备或位置(如公用电话亭、报亭、厕所)和电话。这至少包括Wi-Fi和BlueloothTM(蓝牙)无线技术。因此,通信能是如具有传统网络的预定义结构,或简单的是至少两个设备之间的特别(ad hoc)通信。
Wi-Fi,或无线保真允许从家里的沙发椅、旅馆房间的床上,或工作的会议厅无线地连接到因特网。Wi-Fi是象蜂窝电话那样的无线技术,它使如计算机那样的设备能在室内或户外,在基站范围的任何地方发送和接收数据。Wi-Fi网络使用称为IEEE 802.11(a,b,g等)的无线技术,提供安全、可靠、快速的无线连接。Wi-Fi网络能用于互相连接计算机,将计算机连接到因特网和有线网(它使用IEEE 802.3或以太网)。Wi-Fi网络在无许可的2.4和5GHZ的无线电频带中操作,带有11Mbps(802.11b)或54Mbps(802.11a)的数据速率,或带有包含两个频带(双频带)的产品,所以该网络能提供类似于在许多办公室使用的有线以太网的基本10BaseT的真实性能。
现参考图10,示出按本发明的示例计算环境1000的示意性方框图。系统1000包括一个或多个客户机1002。客户机1002能是硬件和/或软件(如线程、进程、计算设备)。例如,客户机1002能通过采用本发明容纳Cookie和/或相关的前后文信息。系统1000也包括一个或多个服务器1004。服务器1004也能是硬件和/或软件(如线程、进程、计算设备)。例如,服务器1004能包容线程,以通过采用本发明执行转换。在客户机1002和服务器1004之间一种可能的通信能是适用于在两个或多个计算机进程之间传递的数据分组的形式。例如,数据分组能包括cookie和/或相关的前后文信息。系统1000包括能用来便于在客户机1002和服务器之间的通信的通信架构1006(如因特网那样的全球通信网络)。
借助有线(包括光纤)和/或无线技术方便了通信。客户机1002在操作上耦合至能用于存储对客户机1002本地的信息(如cookie和/或相关的前后文信息)的一个或多个客户数据存储1008。类似地,服务器1004在操作上耦合至能用于存储对服务器本地的信息的一个或多个服务器数据存储1010。
上面已描述的包括本发明的诸例子。当然,不可能为了描述本发明的目的而描述各组件和方法的每个可想象的组合,但本领域的技术人员能认识到,本发明的许多另外组合和变更是可能的。因而,本发明旨在包括落在所附权利要求的精神和范围内的所有那些更改、修改和变化。此外,在详述和权利要求中所使用的术语“包括”的意义上,那样的术语意在以类似于术语“包含”的方式是包含性的,就象“包含”在权利要求中作为过渡词所解释。
Claims (40)
1.一种便于在数据存储库中的查询优化的系统,其特征在于,包括:
一查询组件,它接收拟对照所述数据存储库的数据来处理的查询,所述查询包括一原始谓词;以及
一谓词组件,它将所述原始谓词处理成包括隐含谓词的一个或多个新谓词,所述隐含谓词对照所述数据来处理,以返回一最佳解,使得总估算成本大为降低。
2.如权利要求1所述的系统,其特征在于,所述谓词组件处理所述原始谓词以获得一等价谓词。
3.如权利要求1所述的系统,其特征在于,所述谓词组件处理所述原始谓词,以获得一残留谓词。
4.如权利要求1所述的系统,其特征在于,所述查询是以前处理的未匹配的查询。
5.如权利要求1所述的系统,其特征在于,所述一个或多个新谓词可用于标准索引及多值索引。
6.如权利要求1所述的系统,其特征在于,所述新谓词被认为是基于成本的另选方案,它们只在估算成本降低时使用,否则它们被舍弃。
7.如权利要求1所述的系统,其特征在于,所述一个或多个新谓词与索引利用相关联。
8.如权利要求1所述的系统,其特征在于,所述查询是对照不可索引类型的数据类型来处理的。
9.一种按权利要求1所述的系统的数据存储库优化器。
10.一种便于数据存储库中的查询优化的系统,其特征在于,包括:
一查询组件,它接收拟对照所述数据存储库中的数据来处理的查询,所述查询包括一原始谓词;以及
一谓词组件,它将所述原始谓词处理成包括隐含谓词、等价谓词和残留谓词中至少一个的一个或多个新谓词,所述隐含谓词或所述等价谓词的任一个均对照所述数据来处理,以返回一最佳解,使得总估算成本大为降低。
11.如权利要求10所述的系统,其特征在于,所述隐含谓词和所述等价谓词被认为是基于成本的另选方案,若所述估算成本不减少,则舍弃它们。
12.一种在其上存有用于实现权利要求10所述的系统的计算机可执行指令的计算机可读介质。
13.一种采用权利要求10所述的系统的服务器。
14.如权利要求10所述的系统,其特征在于,所述谓词组件使用一个或多个新谓词生成一表达式,所述表达式用于获取一与给定列和给定列上的函数中的至少一个相关联的隐含规则。
15.如权利要求14所述的系统,其特征在于,所述谓词组件响应于提供所述表达式以及能利用的一标准索引的列表,请求所述隐含规则,所述给定列和给定列的所述函数的至少一个要与所述表达式进行比较。
16.如权利要求10所述的系统,其特征在于,在索引选择期间分析所述一个或多个新谓词。
17.如权利要求10所述的系统,其特征在于,它还包括一分类器,它通过基于涉及基于成本的估算、基数估算和查询的复杂性的至少一个的一个或多个参数作出推论以便于使一个或多个特征自动化。
18.如权利要求10所述的系统,其特征在于,仅当优化被增加时,总估算成本包括采用所述一个或多个新谓词。
19.如权利要求10所述的系统,其特征在于,所述查询是在搜索谓词和索引关键词之间没有确切匹配的查询。
20.如权利要求10所述的系统,其特征在于,所述隐含谓词确切地匹配一索引关键词。
21.一种具有用于执行优化搜索查询的方法的计算机可执行指令的计算机可读介质,其特征在于,所述方法包括:
接收一查询,对其原始谓语不存在对一索引关键词的确切匹配;
将所述原始谓词缩减到隐含谓词和等价谓词的至少一个;
对照一数据存储库的数据来处理所述隐含谓词和等价谓词的至少一个,以获得搜索结果;以及
分析所述搜索结果以求最佳解。
22.如权利要求21所述的方法,其特征在于,它还包括请求对一列或一列上的函数的隐含规则。
23.如权利要求21所述的方法,其特征在于,它还包括发送要与一列或一列上的函数比较的表达式、以及能被利用的标准索引或多值索引的列表中的至少一个。
24.如权利要求21所述的方法,其特征在于,它还包括,若所述隐含谓词不利用所述标准或多值索引之一,则去除所述隐含谓词。
25.如权利要求21所述的方法,其特征在于,它还包括对所述原始谓词的一单独的运算符采用一新的特别调查规则。
26.如权利要求25所述的方法,其特征在于,它还包括用所述调查规则分析所述隐含谓词与所述等价谓词的至少一个。
27.如权利要求21所述的方法,其特征在于,它还包括下列动作:
请求具有涉及嵌套查询的谓词的试验性替代的列表;
将所述替代包括在所述查询中,以形成一新的表达式;
简化所述新的表达式;
移除嵌套查询;以及
对所述查询生成新的另选查询。
28.如权利要求21所述的方法,其特征在于,它还包括处理所述原始谓词,以生成细化所述搜索的残留谓词。
29.如权利要求28所述的方法,其特征在于,它还包括在处理所述隐含谓词和所述等价谓词的至少一个的动作后,处理所述残留谓词。
30.如权利要求21所述的方法,其特征在于,它还包括将所述隐含谓词添加到所述原始谓词,并搜索最佳解。
31.如权利要求21所述的方法,其特征在于,它还包括用所述等价谓词代替所述原始谓词,并搜索最佳解。
32.如权利要求21所述的方法,其特征在于,它还包括使用所述隐含谓词和所述等价谓词的至少一个执行一基数估算。
33.如权利要求21所述的方法,其特征在于,它还包括基于一索引扩展方案创建一索引,所述方案包括下列的至少其中之一:
提供对应于被索引的数据类型的数据类型的关键词列;
提供一组参数;以及
提供用于对被索引的列的值生成一索引的条目的表值函数名。
34.一种便于数据存储库中的查询优化的系统,其特征在于,包括:
用于接收对其原始谓词不存在对一索引关键词的确切匹配的查询的装置;
用于将所述原始谓词缩减成隐含谓词和等价谓词中的至少一个的装置;
用于请求对一列或一列上的函数的隐含规则的装置;
用于发送要与一列或一列上的函数比较的表达式、以及能被利用的标准索引或多值索引的列表中的至少一个的装置;
用于对照所述数据存储库的数据来处理所述隐含谓词和等价谓词中的至少一个,以获得搜索结果的装置;
用于分析所述搜索结果以求最佳解的装置;以及
用于在所述隐含谓词不利用所述标准或多值索引之一时移除所述隐含谓词的装置。
35.如权利要求34所述的系统,其特征在于,它还包括用于对所述原始谓词的单独运算符采用一新的特别调查规则的装置。
36.如权利要求34所述的系统,其特征在于,它还包括用于使用所述调查规则分析所述隐含谓词和所述等价谓词的至少一个的装置。
37.如权利要求34所述的系统,其特征在于,它还包括下列的至少其中之一:
用于请求具有涉及嵌套查询的谓词的试验性替代的列表的装置;
用于将所述替代包括在所述查询中,以形成一新的表达式的装置;
用于简化所述新的表达式的装置;
用于移除嵌套查询的装置;以及
用于对所述查询生成新的另选查询的装置。
38.如权利要求34所述的系统,其特征在于,它还包括用于处理所述原始谓词,以生成细化所述搜索的残留谓词的装置。
39.如权利要求38所述的系统,其特征在于,它还包括用于在处理所述隐含谓词和所述等价谓词的至少一个之后,处理所述残留谓词的装置。
40.如权利要求34所述的系统,其特征在于,它还包括用于使用所述隐含谓词和所述等价谓词的至少一个来估算基数的装置,其中,所述隐含谓词的使用方便了确定能满足所述原始谓词的若干行的上界。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/803,443 US20050210023A1 (en) | 2004-03-18 | 2004-03-18 | Query optimizer using implied predicates |
US10/803,443 | 2004-03-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1670729A true CN1670729A (zh) | 2005-09-21 |
Family
ID=34838919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100095642A Pending CN1670729A (zh) | 2004-03-18 | 2005-02-18 | 使用隐含谓词的改善的查询优化器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050210023A1 (zh) |
EP (1) | EP1577796A1 (zh) |
JP (1) | JP2005267612A (zh) |
KR (1) | KR20060043011A (zh) |
CN (1) | CN1670729A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408900B (zh) * | 2008-11-24 | 2011-03-16 | 中国科学院地理科学与资源研究所 | 一种网格计算环境下的分布式空间数据查询优化方法 |
CN102687124A (zh) * | 2009-12-23 | 2012-09-19 | 伊姆西公司 | 分析查询优化器性能的设备和方法 |
CN103608812A (zh) * | 2011-06-15 | 2014-02-26 | 微软公司 | 业务智能系统的查询优化技术 |
CN104285222A (zh) * | 2012-05-07 | 2015-01-14 | 国际商业机器公司 | 使用谓词映射器优化查询 |
CN106547809A (zh) * | 2015-09-18 | 2017-03-29 | 邻客音公司 | 将复合关系表示在图数据库中 |
CN107004034A (zh) * | 2015-02-12 | 2017-08-01 | 华为技术有限公司 | 将列与函数关联以优化查询执行的方法和查询优化服务器 |
CN107229726A (zh) * | 2017-06-06 | 2017-10-03 | 成都索贝数码科技股份有限公司 | 一种基于完全成本计算的数据索引方法及系统 |
CN110637293A (zh) * | 2017-05-31 | 2019-12-31 | 国际商业机器公司 | 数据分析系统中搜索查询的验证 |
CN113742379A (zh) * | 2020-05-27 | 2021-12-03 | 斯诺弗雷克公司 | 使用基于点的关系拆分执行地理空间函数连接 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636707B2 (en) * | 2004-04-06 | 2009-12-22 | Microsoft Corporation | Query selectivity estimation with confidence interval |
US8447743B2 (en) * | 2004-08-17 | 2013-05-21 | International Business Machines Corporation | Techniques for processing database queries including user-defined functions |
US8271463B2 (en) * | 2004-12-28 | 2012-09-18 | International Business Machines Corporation | System and method for providing access to data with user defined table functions |
US8438141B2 (en) | 2005-01-27 | 2013-05-07 | International Business Machines Corporation | System and method for providing secure access to data with user defined table functions |
US7580923B2 (en) * | 2005-05-10 | 2009-08-25 | Microsoft Corporation | Binding for multi-part identifiers |
US7925642B2 (en) * | 2005-06-09 | 2011-04-12 | International Business Machines Corporation | Apparatus and method for reducing size of intermediate results by analyzing having clause information during SQL processing |
US7917482B1 (en) * | 2005-08-10 | 2011-03-29 | Infoblox Inc. | Indexing of database queries |
US8880506B2 (en) * | 2009-10-16 | 2014-11-04 | Oracle International Corporation | Leveraging structured XML index data for evaluating database queries |
US7889676B1 (en) * | 2006-04-13 | 2011-02-15 | Infoblox Inc. | Systems and methods for storing and retrieving data |
US8323415B2 (en) * | 2006-08-10 | 2012-12-04 | GM Global Technology Operations LLC | Fast recycling process for ruthenium, gold and titanium coatings from hydrophilic PEM fuel cell bipolar plates |
US7725448B2 (en) * | 2007-08-31 | 2010-05-25 | International Business Machines Corporation | Method and system for disjunctive single index access |
US7890480B2 (en) * | 2008-02-11 | 2011-02-15 | International Business Machines Corporation | Processing of deterministic user-defined functions using multiple corresponding hash tables |
US9910892B2 (en) | 2008-07-05 | 2018-03-06 | Hewlett Packard Enterprise Development Lp | Managing execution of database queries |
US20100082507A1 (en) * | 2008-09-30 | 2010-04-01 | Archana Sulochana Ganapathi | Predicting Performance Of Executing A Query In Isolation In A Database |
US8805875B1 (en) | 2008-10-04 | 2014-08-12 | Reflex Systems Llc | Systems and methods for information retrieval |
US9141664B2 (en) * | 2009-08-31 | 2015-09-22 | Hewlett-Packard Development Company, L.P. | System and method for optimizing queries |
US9081873B1 (en) * | 2009-10-05 | 2015-07-14 | Stratacloud, Inc. | Method and system for information retrieval in response to a query |
JP5061173B2 (ja) * | 2009-11-13 | 2012-10-31 | 株式会社日立製作所 | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
US8204903B2 (en) * | 2010-02-16 | 2012-06-19 | Microsoft Corporation | Expressing and executing semantic queries within a relational database |
US8332388B2 (en) * | 2010-06-18 | 2012-12-11 | Microsoft Corporation | Transformation rule profiling for a query optimizer |
US8839214B2 (en) * | 2010-06-30 | 2014-09-16 | Microsoft Corporation | Indexable type transformations |
US9489183B2 (en) | 2010-10-12 | 2016-11-08 | Microsoft Technology Licensing, Llc | Tile communication operator |
US9430204B2 (en) | 2010-11-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Read-only communication operator |
US9507568B2 (en) * | 2010-12-09 | 2016-11-29 | Microsoft Technology Licensing, Llc | Nested communication operator |
US9395957B2 (en) | 2010-12-22 | 2016-07-19 | Microsoft Technology Licensing, Llc | Agile communication operator |
US9773032B2 (en) * | 2011-09-30 | 2017-09-26 | Bmc Software, Inc. | Provision of index recommendations for database access |
CN103365885B (zh) * | 2012-03-30 | 2016-12-14 | 国际商业机器公司 | 用于数据库查询优化的方法和系统 |
CN104216891B (zh) * | 2013-05-30 | 2018-02-02 | 国际商业机器公司 | 关系型数据库中的查询语句的优化方法和设备 |
US9753983B2 (en) | 2013-09-19 | 2017-09-05 | International Business Machines Corporation | Data access using decompression maps |
US9336236B2 (en) * | 2014-01-21 | 2016-05-10 | International Business Machines Corporation | Geospatial queries using associated distribution data |
US9780805B2 (en) * | 2014-10-22 | 2017-10-03 | International Business Machines Corporation | Predicate application through partial compression dictionary match |
US10108712B2 (en) * | 2014-11-19 | 2018-10-23 | Ebay Inc. | Systems and methods for generating search query rewrites |
US9626430B2 (en) | 2014-12-22 | 2017-04-18 | Ebay Inc. | Systems and methods for data mining and automated generation of search query rewrites |
US10452656B2 (en) * | 2016-03-31 | 2019-10-22 | Sap Se | Deep filter propagation using explicit dependency and equivalency declarations in a data model |
US10432217B2 (en) | 2016-06-28 | 2019-10-01 | International Business Machines Corporation | Page filtering via compression dictionary filtering |
US11449495B2 (en) * | 2017-02-01 | 2022-09-20 | United Parcel Service Of America, Inc. | Indexable database profiles comprising multi-language encoding data and methods for generating the same |
CN110019307B (zh) * | 2017-12-28 | 2023-09-01 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN108256061A (zh) * | 2018-01-16 | 2018-07-06 | 华东师范大学 | 医疗文本的检索方法、电子设备及存储介质 |
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 |
US11347740B2 (en) * | 2018-10-11 | 2022-05-31 | Varada Ltd. | Managed query execution platform, and methods thereof |
US11106674B2 (en) * | 2019-03-31 | 2021-08-31 | International Business Machines Corporation | Extensible data skipping |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5301317A (en) * | 1992-04-27 | 1994-04-05 | International Business Machines Corporation | System for adapting query optimization effort to expected execution time |
JP2583010B2 (ja) * | 1993-01-07 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法 |
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
JP2710547B2 (ja) * | 1994-02-15 | 1998-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | グラフィカル・ユーザ・インターフェース |
US5664063A (en) * | 1994-12-01 | 1997-09-02 | International Business Machines Corporation | Automatic user notification of certain meeting attributes of a posted calendar event |
US5671403A (en) * | 1994-12-30 | 1997-09-23 | International Business Machines Corporation | Iterative dynamic programming system for query optimization with bounded complexity |
US5701454A (en) * | 1995-01-17 | 1997-12-23 | International Business Machines Corporation | Simplification of SQL queries using generalized inference propagation and generalized transitive closure |
US5778354A (en) * | 1995-06-07 | 1998-07-07 | Tandem Computers Incorporated | Database management system with improved indexed accessing |
US5960194A (en) * | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US6088524A (en) * | 1995-12-27 | 2000-07-11 | Lucent Technologies, Inc. | Method and apparatus for optimizing database queries involving aggregation predicates |
US5893911A (en) * | 1996-04-17 | 1999-04-13 | Neon Software, Inc. | Method for defining and applying rules for message distribution for transaction processing in a distributed application |
US5819255A (en) * | 1996-08-23 | 1998-10-06 | Tandem Computers, Inc. | System and method for database query optimization |
US6219662B1 (en) * | 1997-07-10 | 2001-04-17 | International Business Machines Corporation | Supporting database indexes based on a generalized B-tree index |
US6012054A (en) * | 1997-08-29 | 2000-01-04 | Sybase, Inc. | Database system with methods for performing cost-based estimates using spline histograms |
US5918232A (en) * | 1997-11-26 | 1999-06-29 | Whitelight Systems, Inc. | Multidimensional domain modeling method and system |
US6594653B2 (en) * | 1998-03-27 | 2003-07-15 | International Business Machines Corporation | Server integrated system and methods for processing precomputed views |
US6338056B1 (en) * | 1998-12-14 | 2002-01-08 | International Business Machines Corporation | Relational database extender that supports user-defined index types and user-defined search |
US6360214B1 (en) * | 1998-12-16 | 2002-03-19 | Microsoft Corporation | Automatic database statistics creation |
US6345266B1 (en) * | 1998-12-23 | 2002-02-05 | Novell, Inc. | Predicate indexing for locating objects in a distributed directory |
US6381616B1 (en) * | 1999-03-24 | 2002-04-30 | Microsoft Corporation | System and method for speeding up heterogeneous data access using predicate conversion |
US6578018B1 (en) * | 1999-07-27 | 2003-06-10 | Yamaha Hatsudoki Kabushiki Kaisha | System and method for control using quantum soft computing |
US6516310B2 (en) * | 1999-12-07 | 2003-02-04 | Sybase, Inc. | System and methodology for join enumeration in a memory-constrained environment |
US6353821B1 (en) * | 1999-12-23 | 2002-03-05 | Bull Hn Information Systems Inc. | Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes |
US6675159B1 (en) * | 2000-07-27 | 2004-01-06 | Science Applic Int Corp | Concept-based search and retrieval system |
US6757671B1 (en) * | 2000-09-27 | 2004-06-29 | Microsoft Corporation | Use of indices for queries with comparisons on a function |
US6510422B1 (en) * | 2000-09-27 | 2003-01-21 | Microsoft Corporation | Cost based materialized view selection for query optimization |
US6665664B2 (en) * | 2001-01-11 | 2003-12-16 | Sybase, Inc. | Prime implicates and query optimization in relational databases |
US6850933B2 (en) * | 2001-11-15 | 2005-02-01 | Microsoft Corporation | System and method for optimizing queries using materialized views and fast view matching |
EP1349081A1 (en) * | 2002-03-28 | 2003-10-01 | LION Bioscience AG | Method and apparatus for querying relational databases |
US6598044B1 (en) * | 2002-06-25 | 2003-07-22 | Microsoft Corporation | Method for choosing optimal query execution plan for multiple defined equivalent query expressions |
-
2004
- 2004-03-18 US US10/803,443 patent/US20050210023A1/en not_active Abandoned
-
2005
- 2005-01-27 JP JP2005020315A patent/JP2005267612A/ja active Pending
- 2005-02-18 CN CNA2005100095642A patent/CN1670729A/zh active Pending
- 2005-02-18 KR KR1020050013717A patent/KR20060043011A/ko not_active Application Discontinuation
- 2005-03-14 EP EP05101969A patent/EP1577796A1/en not_active Withdrawn
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408900B (zh) * | 2008-11-24 | 2011-03-16 | 中国科学院地理科学与资源研究所 | 一种网格计算环境下的分布式空间数据查询优化方法 |
CN102687124A (zh) * | 2009-12-23 | 2012-09-19 | 伊姆西公司 | 分析查询优化器性能的设备和方法 |
CN102687124B (zh) * | 2009-12-23 | 2015-09-02 | 毕威拓软件公司 | 分析查询优化器性能的设备和方法 |
CN103608812A (zh) * | 2011-06-15 | 2014-02-26 | 微软公司 | 业务智能系统的查询优化技术 |
CN103608812B (zh) * | 2011-06-15 | 2017-05-10 | 微软技术许可有限责任公司 | 业务智能系统的查询优化技术 |
CN104285222A (zh) * | 2012-05-07 | 2015-01-14 | 国际商业机器公司 | 使用谓词映射器优化查询 |
CN104285222B (zh) * | 2012-05-07 | 2018-03-02 | 国际商业机器公司 | 用于重写查询的方法和系统 |
CN107004034A (zh) * | 2015-02-12 | 2017-08-01 | 华为技术有限公司 | 将列与函数关联以优化查询执行的方法和查询优化服务器 |
CN107004034B (zh) * | 2015-02-12 | 2021-01-29 | 华为技术有限公司 | 将列与函数关联以优化查询执行的方法和查询优化服务器 |
CN106547809A (zh) * | 2015-09-18 | 2017-03-29 | 邻客音公司 | 将复合关系表示在图数据库中 |
CN110637293B (zh) * | 2017-05-31 | 2023-04-04 | 国际商业机器公司 | 数据分析系统中搜索查询的验证 |
CN110637293A (zh) * | 2017-05-31 | 2019-12-31 | 国际商业机器公司 | 数据分析系统中搜索查询的验证 |
CN107229726A (zh) * | 2017-06-06 | 2017-10-03 | 成都索贝数码科技股份有限公司 | 一种基于完全成本计算的数据索引方法及系统 |
CN107229726B (zh) * | 2017-06-06 | 2021-02-19 | 成都索贝数码科技股份有限公司 | 一种基于完全成本计算的数据索引方法及系统 |
CN113742379A (zh) * | 2020-05-27 | 2021-12-03 | 斯诺弗雷克公司 | 使用基于点的关系拆分执行地理空间函数连接 |
US11403296B2 (en) | 2020-05-27 | 2022-08-02 | Snowflake Inc. | Point-based relation splitting in geospatial-function-implied interval joins |
US11514047B2 (en) | 2020-05-27 | 2022-11-29 | Snowflake Inc. | Performing geospatial-function joins using interval joins |
US11709837B2 (en) | 2020-05-27 | 2023-07-25 | Snowflake Inc. | Performing geospatial-function join using implied interval join |
Also Published As
Publication number | Publication date |
---|---|
KR20060043011A (ko) | 2006-05-15 |
EP1577796A1 (en) | 2005-09-21 |
JP2005267612A (ja) | 2005-09-29 |
US20050210023A1 (en) | 2005-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1670729A (zh) | 使用隐含谓词的改善的查询优化器 | |
CN101044479A (zh) | 用于关系数据库系统中基于本体的语义匹配的系统 | |
CN1728140A (zh) | 信息检索系统中基于短语的索引编制 | |
CN1728143A (zh) | 基于短语产生文献说明 | |
CN1194319C (zh) | 对表格式数据进行查找、列表及分类的方法和装置 | |
CN1728141A (zh) | 信息检索系统中基于短语的搜索 | |
CN1101032C (zh) | 相关词抽取设备和方法 | |
CN1109994C (zh) | 文件处理装置与记录媒体 | |
CN1728142A (zh) | 信息检索系统中的短语识别 | |
CN1145901C (zh) | 一种基于信息挖掘的智能决策支持构造方法 | |
CN1552032A (zh) | 数据库 | |
CN1604082A (zh) | 用于任意数据模型的映射体系结构 | |
CN101079026A (zh) | 文本相似度、词义相似度计算方法和系统及应用系统 | |
CN1190477A (zh) | 修改现有数据库以反映相应对象模型变化的方法和装置 | |
CN1053852A (zh) | 目录数据库中的名字判定 | |
CN1091906C (zh) | 模式识别方法和系统以及模式数据处理系统 | |
CN1647076A (zh) | 查询关系数据库的方法和设备 | |
CN101036141A (zh) | 具有持久性、用户可访问的位图值的数据库管理系统 | |
CN1573759A (zh) | 公共查询运行期系统以及应用编程接口 | |
CN1655145A (zh) | 最优化行级别数据库安全的系统和方法 | |
CN1578954A (zh) | 机器翻译 | |
CN1508728A (zh) | 使用元数据在关系数据库中创建多维数据集的方法和系统 | |
CN1281191A (zh) | 信息检索方法和信息检索装置 | |
CN1310422A (zh) | 数据处理方法、系统、处理程序及记录媒体 | |
CN1855103A (zh) | 特定元素、字符串向量生成及相似性计算的装置、方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |