估计第一和第二表连接大小的方法和装置的制作方法

文档序号:6563094阅读:141来源:国知局

专利名称::估计第一和第二表连接大小的方法和装置的制作方法
技术领域
:本发明涉及数据库管理系统,特别地,涉及估计连接的大小。
背景技术
:数据库用于为无数的应用存储信息,所述应用包括多种商业的、工业的、技术的、科学的和教育的应用。由于对信息的依赖的增长,存储在多数数据库中的信息量以及想要访问所述信息的用户数量同样在增长。此外,由于数据库中的信息量以及想要访问所述数据库的用户数量的增长,用于管理这种数据库所需的计算资源的数量也在增长。数据库管理系统(DBMS)是用于访问存储在数据库中的信息的计算机程序,因此其常常需要巨大的资源用以处理在这种系统上的繁重的工作量。这样,投入了大量资源来增加数据库管理系统对数据库搜索或查询处理的性能。计算机硬件和软件的改进已经改进了传统数据库管理系统的能力。例如,在硬件领域,耦合了改进的存储器管理系统的微处理器性能的增加已经改进了特定微处理器在给定时间单元所能执行的查询的数目。进一步地,多个微处理器和/或多个连网的计算机的使用进一步增加了许多数据库管理系统的能力。从软件的立场,关系数据库的使用充分地改进了处理效率,并且充分地简化了数据库中信息的创建、组织和扩展,其中所述关系数据库将信息组织为在形式上被定义为包括行和列的表,并且典型地利用如结构化查询语言(SQL)这样的标准化语言来访问。进一步地,重要的开发努力集中在了查询“优化”上,从而以自动的方式来优化特定搜索或查询的执行以最小化执行每个查询所需的资源的数量。查询优化器典型地为每个提交的查询产生生成访问计划。在生成访问计划时,查询优化器典型地创建多个潜在的访问计划,并且基于每个计划的“成本”在那些潜在的访问计划中选择最佳的计划。每个计划的成本表示由所述计划期望使用的资源数量(典型地表示为期望的执行时间数量),这样,选择具有最低成本的计划典型地导致最高效(最快)的查询执行。查询优化存在问题的一个领域是和模糊逻辑搜索有关。通常,对查询数据库引入模糊逻辑规则产生了更好地反映执行查询的用户意图的查询结果。通常地,在模糊逻辑之前,用户必须通过其查询来任意地量化和/或特征化他们的意图,这常常导致查询结果不能充分地反映他们的意图。例如,用户可能想要标识部门中的“优秀”员工,如,有优秀的销售额以及良好投诉记录的员工。通常地,销售额越高并且对该员工的无确实根据的投诉数量越少,该员工就越好。但是,如果没有模糊逻辑,用户就必须指定该用户认为是优秀销售额的最低销售额,如,50,000美元或以上的销售额,以及用户必须指定该用户认为是良好的无确实根据的投诉的数量,如,少于或等于5个投诉。该搜索可能被表示为查询1SELECT*FROMEMPLOYEESWHERESALES>=50000ANDNUM_UNSUBSTANTIATED_COMPLAINTS<=5ORDERBYSALESDESC,NUM_UNSUBSTANTIATED_COMPLAINTSASC利用上述没有结合模糊逻辑规则的查询,该用户通常将确切地接收到其所要求的、主要是具有50,000美元或以上销售额并且无确实根据的投诉小于或等于5个的员工的列表。然而,这样的搜索可能遗漏销售额是49,999.99且无确实根据的投诉为0的员工或者遗漏具有6个无确实根据的投诉但是销售额为100,000美元的员工,上述两者都可能被该用户认为是优秀员工。进一步,在所述结果中该用户可能认为具有50,000美元销售额和0个无确实根据的投诉的员工比具有51,000美元销售额并具有4个无确实根据的投诉的员工要优秀,但是这些没有被反映出来。相反,模糊逻辑规则可以用于处理数据库查询以限定用户不必通过销售额和无确实根据的投诉数量的条件来任意地确定构成优秀员工的条件。通常地,模糊逻辑允许销售额条件根据销售额的连续函数进行表示以及无确实根据的投诉数量条件根据无确实根据的投诉数量的连续函数进行表示。根据每个相应的连续函数的组成员关系(membership)可以由从0到1的域中的值来测量。典型地,值“1”指示意味着条件完全满足的组中100%的成员关系,以及值“0”指示意味着条件一般不满足的组中0%的成员关系。落在0和1之间的值指示组中的某些成员关系并且可以使用算法来确定。例如,值“.9876”可以指示比值“.1234”更高的在组中的成员关系。这样,根据前面的例子,销售额组中的成员关系可以表示为连续的函数,例如,其中销售额多于100,000美元指示1的成员关系,以及例如,销售额少于40000美元指示0的成员关系。相似地,无确实根据的投诉组中的成员关系可以表示为连续的函数,其中例如,如果员工具有少于两个无确实根据的投诉时,则他或她在组中的成员关系是1。然而,例如,如果无确实根据的投诉数量多于10,则成员关系为0。对于具有多于一个这种条件的查询,可以确定每个组成员关系并且可以利用组成员关系值的加权平均,或者依据查询操作(如,与操作、或操作、非操作等)来利用最小的和/或最大的组成员关系值以生成用户的优秀员工列表。通常地,所述员工列表可以更好地近似于符合用户意图的优秀员工。例如,可以包括典型地将被如上面所示的通常查询所遗漏的员工,并且那些被包括的员工典型地基于它们怎样相对地符合两个条件而进行排序。如上面指出的,数据库环境中引入模糊逻辑规则可以使查询优化变得复杂。特别地,它有助于在优化期间估计记录数量,所述记录当处理数据库谓词查询中的给定条件时被返回。基于所述估计,所述优化器能够更好地比较所述访问计划,并且在运行时条件下选出最好的计划。确定了上述目标,表中的数据可以被分类并放到柱状的存储段(bucket)中,以及可以存储关于所述柱状存储段的描述信息。例如,存储段的高低值、每个存储段中的记录数量以及所述表的高低值都可以被存储。这样,优化器可以依据与所述存储数据联合的公式来估计记录数量,所述记录可以根据给定标准被返回。某些优化器还利用所述公式来作额外的估计。例如,用于估计小于x(如,x的值可以在例如table1.field1<x这样的数据库谓词查询中)的可以被返回的记录的数量的公式可以被重写,以便估计小于或等于x的可以被返回的记录的数量。通常地,这些技术适于用来估计可以根据给定标准从单一表中返回的记录的数量;然而,已经发现了对在两个表的连接操作之后可被返回的记录数量(也被称为连接大小)进行估计会引起不准确性和/或不一致性。结果,优化器可以基于所述不准确性和不一致性在运行时条件下选出次最佳的访问计划。连接典型地是用于根据某些标准联合来自两个或多个不同表的数据的操作。连接操作在数据库查询中是常见的并且通常被用于访问来自关系数据库的数据。特别地,其数学特性(如,(A<B)=1-(A>=B)or(A<=B)=(A<B)+(A=B))通过所述公式被优化器用来为例如这些不等式的额外关系估计连接大小,所述数学特性被应用于通常本质上“模糊”的值。这样,为这些不等式估计连接大小类似于上文中的查询1,通常导致不适当的结果。特别地,在现代的基于成本的查询优化中,为了更快速地访问和恢复,与前面的数据库查询联合使用的连接大小估计(和访问计划)被存储并被重新使用。然而,在传统设计中,在此上下文中重新使用估计会出现问题。例如,如果结果对于A<B和A=B早已可用,则在传统设计中联合这些结果来估计A>B的结果是不可靠的,因为使用了传统计算|A<=B|+|A>B|<>|叉积(crossproduct)|。相反,|叉积|-|A<=B|可能导致少于或非常接近0的值。负数和接近0的数字通常导致与较大的数字根本上不同的行为,而这是不希望的。进一步地,即使当公式没有被优化器重写以用于估计额外的关系,但如果用户重新用公式表示数据库查询也会导致不一致性。因此在本领域存在对用于估计连接大小的改进方法的需求,特别是,对用于对导致更加一致的估计的连接大小进行估计的改进方法的需求。
发明内容本发明通过提供一种装置、程序产品和方法来解决关联于现有技术的这些和其它问题,所述装置、程序产品和方法通过生成部分连接估计并联合所述部分连接估计来计算连接大小的估计。所述部分连接估计的操作可以用于根据给定条件产生一致的连接大小估计,并且因此使得能够进行在运行时条件下更加优化的访问计划的选择。与本发明相一致的某些实施例可以根据给定条件来为来自于与将被连接的表的直方图相关联的合并区域计算部分连接估计。此外,部分连接估计可以被联合以计算连接大小估计。特别地,可以生成连接大小估计来估计记录的数量,所述记录可以在第一表的数据值等于、小于、小于等于、大于、和/或大于等于第二表的数据值时被返回。可以通过将来自于与合并区域相关联的第一表的直方图的存储段或区域的密度和来自于与所述合并区域相关联的第二表的直方图的存储段或区域的密度按照所述合并区域的宽度来进行比例缩放(scaling),来生成部分连接估计。所述密度可以通过将存储段的计数除以存储段的宽度来计算。所述存储段的计数表示在存储段中数据值的数量。可以在密度的缩放中引入模糊逻辑规则,这样,所述密度的值可以是在0和1之间的值。结果,部分连接估计,以及通过联合所述部分连接估计而最终产生的连接大小估计可以更一致,因为它们可以基于合并了模糊逻辑规则的所述进行过缩放的密度。表征本发明的这些以及其它优点和特征在权利要求中阐明并形成本发明的进一步的部分。然而,为了更好理解本发明以及通过其使用所获得的优点和目标,应当参考附图以及所附的描述主题,在其中描述了本发明的示例性实施例。图1是引入了数据库管理系统的连网计算机系统的框图,在所述数据库管理系统中实现了与本发明相一致的查询优化。图2是例示在图1的数据库管理系统的主要组件和在其之间的信息流的框图。图3是例示了用于图1的数据库管理系统中的连接大小估计例程的一个实现的程序流的流程图。图4是用于表A的直方图A的一个实现和用于表B的直方图B的一个实现,以及可以从中生成的合并区域的图。具体实施例方式此后讨论的实施例通过生成部分连接估计并联合所述部分连接估计来计算连接大小估计。例如,连接大小估计可以估计记录数量,所述记录可以在第一表的数据值等于、小于、小于等于、大于、和/或大于等于第二表的数据值时被返回。通常地,下面描述的用于估计连接大小的公式在本质上是健壮的,即,它们产生一致的估计。在此包括了用于对前面提及的每个关系计算连接大小估计的健壮的公式并且将结合附图3中的例程60来进行讨论。如上面指出的,连接大小估计可以基于多个部分连接估计的联合。在这点上,部分连接估计可以是在生成所述连接大小估计时使用合并区域所计算出的任何中间估计。合并区域可以是从将被连接的表的直方图的至少一部分中形成的任何区域。在所例示的实施例中,可以从将被连接的表的直方图生成多个合并区域,并且在将被连接的表的直方图中存在的合并区域可以比存储段更多。通常地,在所例示的实施例中定义的合并区域可以包括下界(lowrange)和上界(highrange),所述下界是独占的而所述上界是包括的。此外,合并区域的上界可以是下一个合并区域的下界。所述合并区域的下界和上界可以重叠于将被连接的表的直方图的一个区域,即,合并区域的下界和/或上界可以是来自于将被连接的表的直方图的存储段的界限(bound)。例如,合并区域的下界可以是将被连接的第一表的第一直方图的存储段的下限(lowerbound)以及合并区域的上界可以是将被连接的第二表的第二直方图的存储段的上限(upperbound)。此外,合并区域的所述下界和上界可以是来自将被连接的表的单一直方图。例如,合并区域的所述下界和上界可以和直方图存储段的下限和上限相一致,但是与本发明相一致的实施例中不必是这种情况。合并区域的生成将结合附图3中的例程60进行进一步的讨论。进一步,为了简单起见,参考在整个此申请中的表,如,表的直方图、连接表和/或相似物;然而,读者应该明白,所述参考也可以指所述表的特定的列,如本领域普通技术人员可以理解的一样。现在参考附图,其中在若干视图中相同的数字代表相同的部分,图1例示了装置10的示例性的硬件和软件环境,所述装置10适合于实现引入了与本发明一致的查询优化的数据库管理系统。为了本发明的目的,装置10实际上可以表示任意类型的计算机、计算机系统或其它可编程电子设备,包括客户端计算机、服务器计算机、便携式计算机、手持计算机、嵌入式控制器等。此外,装置10可以利用一个或多个连网的计算机(如,在一个集群或其它分布式计算机系统中)来实现。下文中,装置10也指“计算机”,尽管应该认识到,术语“装置”还可以包括与本发明相一致的其它适合的可编程电子设备。计算机10典型地包括中央处理单元(CPU)12,所述中央处理单元包含一个或多个耦合到存储器14的微处理器,所述存储器可以表示包括计算机10主存储器以及的随机存取存储器(RAM)设备,也可以表示任意辅助级别的存储器,如,高速缓冲存储器、非易失性或备份存储器(如,可编程或闪速存储器)、只读存储器等。此外,存储器14可以被认为包括物理上位于计算机10中其它地方的存储器,如,在CPU12的处理器中的任意高速缓冲存储器,以及例如存储在海量存储装置16或耦合到计算机10上的另一计算机上的用作虚拟存储器的任意存储容量。计算机10也典型地接收多个输入和输出以用于和外部进行信息传送。对于与用户或操作者的接口,计算机10典型地包括合并一个或多个用户输入设备(如,键盘、鼠标、轨迹球、操纵杆、触摸板和/或麦克风、以及其它)和显示器(如,CRT监视器、LCD显示面板和/或扬声器、以及其它)的用户接口18。另外,用户输入可以通过另一计算机或终端接收,如,通过客户端或通过网络22耦合到计算机10上的单用户计算机20。后一实现是所希望的,其中计算机10被实现为服务器或其它形式的多用户计算机。然而,应该理解,计算机10在某些实施例中还可以被实现为独立的工作站、台式机、或其它单用户计算机。对于非易失性存储装置,计算机10典型地包括一个或多个海量存储设备16,如,软盘或其它可移除盘驱动器、硬盘驱动器、直接存取存储设备(DASD)、光驱动器(如,CD驱动器、DVD驱动器等)、和/或磁带驱动器、以及其它。此外,计算机10还可以包括与一个或多个网络22(如,LAN、WAN、无线网络、和/或因特网,以及其它)之间的接口24以允许与其它计算机和电子设备进行信息传送。应该理解,计算机10典型地包括如本领域公知的在CPU12和组件14、16、18和24中的每个之间的适合的模拟和/或数字接口。计算机10在操作系统26的控制下运行,并执行或者依赖于多种计算机软件应用、组件、程序、对象、模块、数据结构等。例如,数据库管理系统(DBMS)28可以驻于存储器14中以访问驻于海量存储装置16中的数据库30。此外,多种应用、组件、程序、对象、模块等也可以在通过网络耦合到计算机10的另一计算机中的一个或多个处理器上执行,如,在分布式或客户端-服务器计算环境中,其中实现计算机程序功能所需的处理通过网络分配到多个计算机。通常地,被执行以实现本发明实施例的所述例程,不论作为操作系统或者特定应用、组件、程序、对象、模块或指令序列、或甚至它们的子集的一部分被实现,在此都是指“计算机程序代码”或简称“程序代码”。程序代码典型地包括在多个时刻驻留在计算机的多个存储器和存储设备中的一个或多个指令,以及,当被计算机的一个或多个处理器读取并执行时,使得计算机执行用于执行体现本发明多个方面的单元或步骤所必须的步骤。此外,尽管本发明具有并且此后在具有完全功能的计算机和计算机系统的环境中将描述的实施例,但本领域技术人员将理解,本发明的多个实施例能够以多种形式作为程序产品被分发,并且不论用于实际执行所述分发的特定类型的计算机可读媒体,本发明都可以同等地进行应用。计算机可读媒体的例子包括但不限于有形的、可记录类型媒体(如易失性和非易失性存储器设备、软盘和其它可移除盘、硬盘驱动器、磁带、光盘(如,CD-ROM、DVD等),以及其它)以及传输类型媒体(例如数字和模拟通信链路)。此外,此后描述的多种程序代码可以基于所述应用被标识,其中在所述应用中在本发明的特定实施例中实现所述应用。然而,应理解,下面所使用的任意特定程序术语仅仅是为了方便,并且因此本发明不应当限于唯一地使用在由这样的术语所定义和/或暗示的任意特定应用中。进一步地,尽管给定典型地无穷多的方式,其中计算机程序可以被组织为例程、过程、方法、模块、对象等,还可以给定多种方式,其中可以对驻留在典型计算机中的多种软件层(如,操作系统、库、API、应用、小应用程序等)之间分配程序功能,但应理解,本发明不限于此处描述的程序功能的特定组织和分配。本领域技术人员将认识到,图1所例示的示例性环境的目的并不是限制本发明。实质上,本领域技术人员将认识到,可以使用其它可选的硬件和/或软件环境而不脱离本发明的范围。图2接着更加详细地例示了DBMS28的一个实现中的主要组件。通常与查询执行相关的所述DBMS28的主要组件是结构化查询语言(SQL)分析器40、查询优化器42和数据库引擎44。SQL分析器40从用户(或更典型地,从由用户执行的应用)接收数据库查询46,其在所示的实施例中以SQL语句的形式提供。然后SQL分析器40从中生成已分析语句48,其被传送到用于查询优化的优化器42。作为查询优化的结果,生成执行或访问计划50。一旦生成之后,所述执行计划被转发到用于对数据库30中的信息执行数据库查询的数据库引擎44。所述数据库查询的执行结果典型地存储在结果集合中,如框52所示。为了便于优化,可以在DBMS28中引入统计管理器54。通常地,与本发明相一致的实施例中的DBMS能够确定来自将被连接的表的直方图的多个合并区域。此外,所述DBMS能够为每个合并区域计算部分连接估计并且联合所述部分连接估计。所述部分连接估计可以基于在此包括的健壮的公式。图3接着例示例程60,其是连接大小估计例程的示例性实现,其确定合并区域、为合并区域计算部分连接估计、以及联合所述部分连接估计以生成可以被DBMS用来执行优化的连接大小估计。将被连接的表可以从数据库查询来确定。特别地,例程60利用合并了模糊逻辑规则的健壮的公式来生成估计。转到例程60,例程60依赖于用于将被连接的表的直方图的存在。特别地,整个例程60中,引用和操作用于表A的直方图A和用于表B的直方图B、直方图A和直方图B的存储段、以及直方图A和直方图B的上下限。本领域普通技术人员公知的任意技术都可用于生成所述直方图。参考框62,在框62中多种变量被引用并初始化。变量i用于通过直方图A的存储段进行循环,而变量j用于通过直方图B的存储段进行循环。特别地,A.upper[i]和B.upper[j]分别表示直方图A和B的存储段的数组。通常地,A.upper[i]和B.upper[j]可以分别用于通过直方图A和B的存储段的下限和/或上限进行迭代。特别地,变量i和j被初始化为值负1。A.upper[-1]表示直方图A的第一存储段的下限,而B.upper[-1]表示直方图B的第一存储段的下限。对A.upper[i]和B.upper[j]没有限制,即,A.upper[i]=∞和/或B.upper[j]=∞。此外,A.upper[A.length]可以等于无穷,即A.upper[A.length]=∞,和/或B.upper[B.length]可以等于无穷,即,B.upper[B.length]=∞,其中.length表示各自直方图的存储段的数量。这样,可以在直方图中具有无穷数量的界限。total变量表示为每个合并区域所计算的部分连接估计的累计,而accum变量表示用于不等式的累加器。所述accum变量通常表示在直方图A中有多少个值小于合并区域的下界的估计(结合框78作了更详细的讨论)。prev变量通常表示在合并区域中的直方图B中的值和来自accum变量的直方图A中的值之间的叉积(结合框78作了更详细的讨论)。所述accum和/或prev变量可以用于为不等式估计部分连接估计和连接大小,所述不等式如,<、<=、>和/或>=。所述变量total、accum和prev可以在框62中被初始化为值0。接着,在框64中,直方图A和直方图B可以例如从存储器中被读取。例如在框64中,当直方图A和B被生成之后,可以利用本领域普通技术人员已知的任意技术将所述直方图存储到存储器并读取。直方图A和直方图B可以根据需要被读取。接着,在框66中,直方图A和B的存储段的界限(即,下限和/或上限)被相互比较,并且基于所述比较,控制可以转到框68、框70或框72。需要特别指出,在从框64扩展到78的循环的第一迭代中,所述变量i和j被首先被设置为负1,即A.upper[-1]和B.upper[-1],因为变量i和j在框62中被初始化为负1。因此,A.upper[-1]指直方图A的第一存储段的下限,而B.upper[-1]指直方图B的第一存储段的下限。返回框66,可以执行对A.upper[i]和B.upper[j]的比较以确定最下限的值。如果由A.upper[i]表示的所述界限值小于由B.upper[j]表示的界限值,那么最下限值是A.upper[i]的值,并且控制转到框68。此外,在框68中变量i递增1。另一方面,重新回到框66,如果由A.upper[i]表示的所述界限值大于由B.upper[j]表示的界限值,那么最下限值是B.upper[j]的值,并且控制转到框72。在框72中,变量j可以加1。然而,如果由A.upper[i]表示的界限值等于由B.upper[j]表示的界限值,则最下限值是A.upper[i]或B.upper[j]的值,并且控制转到框70。在框70中,变量i和j可以各自加1。变量通常被加1,这样在下一个迭代循环中,可以比较直方图A和B的界限值。例如,通过将变量i加1,直方图A的下一界限值可以通过A.upper[i]进行访问,并且与B.upper[j]的界限值进行比较,该界限值不是新的界限值(例如如果j递增1)、就是与B.upper[j]相同的界限值。相似地,通过将变量j加1,直方图B的下一界限值可以通过B.upper[j]进行访问,并且与A.upper[i]的界限值进行比较,该界限值不是新的界限值(例如如果i递增1)、就是与A.upper[i]相同的界限值。接着,控制从框68、70或72转到框76。框76确定循环是否结束。特别地,在框76中,确定变量i是否等于A.length以及变量j是否等于B.length。A.length和B.length分别表示直方图A和直方图B中的存储段的数量。如果框76的条件符合,则控制转到框80并且所述例程结束。在框80中,所述total的值通常表示部分连接估计的联合,然而,所述total的值可以在框80中根据所使用的公式和/或所查找的连接大小估计进行调整。如果框76的条件不符合,则控制转到框77以生成包括其下界和上界的合并区域,然后控制转到框78,以为所述合并区域计算部分连接估计,并且利用所述total值联合所述部分连接估计。为进一步示例合并区域的概念,图4一般地例示了可以从直方图A和B的一个示例性实现中生成的合并区域。所例示的直方图A具有四个存储段,而直方图B具有六个存储段。在直方图A和B中,每对垂直线表示一个存储段。此外,基于直方图A和B例示了十个合并区域。每对垂直线表示一个合并区域。返回图3,从框66中的比较中确定的最下限值可变为框77中合并区域的下界或者上界。换句话说,所述合并区域可以与直方图A和/或直方图B的区域或存储段重叠。通常地,合并区域可以由独占的下界和包含的上界构成,如,(-1,0]。是否可以把从框66确定的最下限值指定为所述合并区域的下界或上界可以取决于所述合并区域是否已经具有下界。此外,在与本发明相一致的实施例中,合并区域的上界可以变成下一合并区域的下界。本领域普通技术人员可以理解,通常合并区域可以利用如下算法通过在直方图A和B之间进行迭代来凭空构造HR(M)=Min(UB(currA),UB(currB))LR(M)=Min(LB(currA),LB(currB))do_calculationsifUB(currA)>UB(currB)nextB(currB);elseifUB(currA)<UB(currB)nextA(currA)elsenextA(currA);nextB(currB)特别地,M是合并区域,currA表示直方图A的当前界限,而currB是直方图B的当前界限。UB表示上限而LB表示下限。HR表示上界而LR表示下界。nextA和nextB各自表示直方图A和B的下一界限。值得注意的是,在第一循环迭代期间,将被生成的第一合并区域可能不具有下界或上界。这样,从框66确定的最下限值可以是第一合并区域的下界。此外,在第二循环迭代期间,从框66确定的后续最下限值可以变为第一合并区域的上界。这样,第一合并区域以及其下界和上界的创建可以依据两次循环迭代。此外,本领域普通技术人员可以了解,在第一合并区域被创建之后,在两次循环迭代之后,所述第一合并区域的上界可以变为下一合并区域的下界,并且从框66确定的下一最下限值可以变为下一合并区域的上界,依此类推。这样,合并区域的下界可以是前一合并区域的上界,并且所述合并区域的上界可以是从框66确定的下一最下限值。作为例子,在第一循环迭代期间,由框66确定的最下限值可以是2;这样在框77中所述第一合并区域可以具有下界2,即(2,_]。在第二循环迭代期间,由框66确定的所述最下限值可以是4;这样在框77中所述第一合并区域的上界可以为4,即(2,4]。在第三循环迭代期间,下一合并区域的下界可以是前一合并区域的上界,即4,以及所述合并区域的上界可以是框66确定的下一最下限的值,如9。这样,在第三迭代期间,在框77中所述合并区域可以是(4,9))。此外,值得注意的是,循环的顺序可以改变。例如,框77的动作可以在框66之后并且在框68、70和/或72之前执行。接着,在框78中可以为所述合并区域计算部分连接估计并且将所述部分连接估计与total变量进行联合。如上文所提到的,直到第二迭代才生成第一合并区域;这样,框78在第一循环迭代期间可以被跳过。但是,依据所查找的连接大小估计的类型,可以利用此后给出的五个公式之一来为所述合并区域计算所述部分连接估计。此外,在框78中可以计算多于一个的部分连接估计。例如,在下面例示的例子中,在表III和表V中例示了三个连接大小估计以及导致所述连接大小估计的部分连接估计。这样,可以具有多于一个的total变量,如,对于每个连接大小估计,可以通过部分连接估计更新不同的total值。此外,值得注意的是,某些公式可以分离成两个部分。例如,第一部分可以用于生成部分连接估计,而后一部分可以在所有部分连接估计都被联合之后使用。所述公式是否可以分为两个部分可以取决于所查找的连接大小估计,如,<和<=公式可以被分离。然而,所述公式不必进行分离。但是,所述公式通常依据平均分布假设和模糊逻辑规则。这样,所述公式避免生成之外的密度并且可以导致更加一致的估计以及增加全面的准确性。在利用公式之一生成所述部分连接估计并且将其和相应的total变量进行联合之后,控制转到框64。每个公式将在下面进行单独讨论。如果所查找的连接大小估计是等于TableB的数据值的TableA的数据值的数量的估计,则可以基于下面的公式在框78中为框77的合并区域生成部分连接估计A=Bforeach(currM,M)total+=|currA|*|currB|*width(currM)通常可以利用这个公式为每个合并区域计算部分连接估计。术语|currA|表示关联于当前合并区域(即,currM)的直方图A的当前存储段的密度。术语|currB|表示关联于当前合并区域的直方图B的当前存储段的密度。关联于合并区域的存储段指直方图A和直方图B中的存储段,其中所述合并区域完全在存储段的界限中和/或所述合并区域与存储段的一部分重叠,如,合并区域的上界与直方图A的存储段的下限相同。存储段的密度可以通过把存储段的计数除以存储段的宽度来确定。存储段的计数可以存储在例如A.bucket_counts[]的数组中,并且可以在框64中被读取。通常地,A.bucket_counts[-1]、B.bucket_counts[-1]、A.bucket_counts[A.length]和B.bucket_counts[B.length]可以被初始化为0,并且当所述值被读入时可以被更新。典型地,存储段的计数表示存储段中数据值的数量,存储段的宽度表示存储段的上界和下界的差,而合并区域的宽度表示合并区域的上界和下界的差。基于包含的、相邻独占的区域和/或直方图的存储方式,需要通过对存储段的宽度加1或减1来对存储段的宽度进行调整。符号“*”被引用于整个具体实施方式中并且表示相乘。这样,根据这个公式,为了为合并区域生成部分连接估计,密度currA与密度currB相乘,并且与合并区域的宽度相乘。此外,通过公式为每个合并区域计算的部分连接估计可以与total值联合,如,通过相加的方式。total变量通常保持为为每个合并区域生成的每个部分连接估计的累计。一旦为所述第一合并区域生成部分连接估计,则可能在两次循环迭代之后,在每个后继的循环迭代期间可以利用这个公式生成部分连接估计并且将其加到total值。当控制最终转到框80时,在框80中的total值将表示为条件(A=B)时的连接大小估计,而对于条件(A=B),进一步调整total变量也许是不合适的。返回到框78,如果所查找的连接大小估计是小于TableB的数据值的TableA的数据值的数量的估计,则可以基于下面的公式在框78中为框77的合并区域生成部分连接估计A<Bforeach(currM,M)total+=1/20*|currA|*|currB|*width(currM)*(width(currM)-1)特别地,提供(width(currM)-1)来排除来自于与合并区域相关联的相等的直方图A和直方图B存储段的数据值。一般地利用这个公式可以为每个合并区域计算部分连接估计。与框77、78和/或80相关的前面讨论可以是部分地或全部地相关的和可适用的。此外,当所查找的连接大小估计用于不等式时,可以为框78中的每个合并区域计算accum变量值和prev变量值。所述accum变量是比合并区域的下界更小的TableA的数据值的数量的累计,通常被表示为foreach(currM,M)accum(currA)+=|priorA|*width(priorM)可以通过将关联于前一合并区域的直方图A的存储段的密度(即priorA)和前一合并区域的宽度(即priorM)相乘,并将该乘积加到所述accum值来为每个合并区域计算accum变量的值。通常,当所查找的连接大小估计是小于TableB的数据值的TableA的数据值的数量的估计时,所述accum允许例程60执行一遍。可以通过foreach(currM,M)prev|currB|*width(currM)*accum(currA)来为每个合并区域计算所述prev值。所述prev值是关联于合并区域的TableB的直方图的存储段的数据值与来自accum的关联于合并区域的TableA的直方图的存储段的数据值之间的被估计的叉积。第一合并区域的accum值和/或prev值可以为0,因为在第一合并区域之前可能没有基于accum和/或prev变量的计算的值。特别地,为循环的每个合并区域计算的部分连接估计可以与total值联合,其保持为为每个合并区域生成的每个部分连接估计的累计。然而,如果在框76确定变量i等于A.length以及变量j等于B.length并且控制转到框80,则在框80中为每个合并区域生成的prev值可以加到total变量上。这样,变量prev可以用在与框80有关的公式的第二部分中。特别地,在框80中,合并了accum值的prev值可以加到total值上。这样,所查询的连接大小估计可以基于prev值和total值的和。换句话说,在框80中prev值的总数可以加到部分连接估计的总数(即total)上。虽然框80可能不适合于等于TableB的TableA的数据值的连接大小估计,但在框80中total变量的调整可以适合于小于TableB的TableA的数据值的连接大小估计。此外,值得注意的是,本领域普通技术人员可以理解,该公式可以相似于计算三角形面积。特别地,所述估计可以通过将重叠total(三角形)加到prev值(矩形)而得到。另一方面,通常可以通过用为每个合并区域生成的prev值来增加total值以代替在框80中把prev值加到total值上来为每个合并区域计算小于TableB的数据值的TableA的数据值的连接大小估计。这样,total的部分连接估计的累计还可以合并为每个合并区域生成的prev值的累计。因此,所述公式可选地可以表达如下A<Bforeach(currM,M)total+=1/2*|currA|*currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)特别地,在每个迭代期间通常可以利用每个合并区域的prev值来增加total值。这样,在框80,可以不必通过prev值的增加来调整total值。结果,可以在与本发明一致的某些实施例中省略框80。本领域普通技术人员可以理解,用两部分表达的公式与单一公式之间的主要差别是把prev值加到total上,所述用两部分表达的公式即,total表示为每个合并区域生成的部分连接估计的累计以及把为每个合并区域生成的所有prev值加到部分连接估计的最后total总数上,所述单一公式即,为每个合并区域把所述部分连接估计和prev值加到每个合并区域的total值上。此外,本领域普通技术人员可以了解,可以对在此描述的公式进行其它修改,这样,本发明的范围不应该局限于此处的特定实施例。返回到框78,如果所查询的连接大小估计是小于或等于TableB数据值的TableA数据值的数量的估计,则基于如下公式可以在框78中为框77的合并区域生成部分连接估计A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)-1)此外,为每个合并区域生成的所有prev值都可以通过如下公式计算foreach(currM,M)prev|currB|*width(currM)*accum(currA)并且将其加到框80中的total值上。换句话说,为每个合并区域生成的prev值的累计可以象total变量一样地被保持,并且在框80中prev值的累计可以加到total值上以生成所查找的连接大小估计。例如,prev值的累计可以通过如下方式生成foreach(currM,M)prev+=|currB|*width(currM)*accum(currA)对于小于TableB的数据值的TableA的数据值的数量的连接大小估计进行估计的讨论可以是部分地或全部地可适用的。所述公式的主要差别在于所述合并区域宽度的增加,用加1来代替减1。相似地,与框77、78和/或80相关的讨论是相关的并且可以是可适用的。此外,如果被考虑为三角形,则小于等于TableB的数据值的TableA的数据值的数量的连接大小估计包括三角形斜边。可选地,通常在每个合并区域的每个迭代期间可以利用prev值来更新total,其通过如下方式A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)此外,小于等于关联于合并区域的直方图B的存储段的数据值的关联于合并区域的直方图A的存储段的数据值的数量的部分连接估计可以通过如下方式把关联于所述合并区域的第一和第二直方图的区域或存储段的叉积进行相乘来确定A<=B100%[CrossProduct(A,B)]-(A>B)特别地,CrossProduct(A,B)=f(A<B)+f(A=B)+f(A>B)可以通过对用于合并区域的三个部分连接估计的相加来确定所述叉积,所述部分连接估计主要是小于、等于以及大于关联于合并区域的直方图B的存储段的数据值的关联于合并区域的直方图A的存储段的数据值的数量的部分连接估计。本领域普通技术人员可以理解,可以利用多于一个的total变量,如,一个total变量用于(A<B)、一个total变量用于(A=B)、和/或一个total变量用于(A>B)。此外,本领域普通技术人员可以理解,可以根据框80中的公式,通过联合单独的total(即已调整的total或未调整的total)将该公式用于生成所查找的连接大小估计。相似地,小于和/或等于关联于合并区域的直方图B的存储段的数据值的关联于合并区域的直方图A的存储段的数据值的数量的部分连接估计可以通过如下确定A<=B(A<B)+(A=B)这样,对于每个合并区域,小于关联于合并区域的直方图B的存储段的数据值的关联于合并区域的直方图A的存储段的数据值的部分连接估计,以及等于关联于合并区域的直方图B的存储段的数据值的关联于合并区域的直方图A的存储段的数据值的部分连接估计可以被相加。本领域普通技术人员可以理解,可以利用多于一个的total变量,如,一个total变量用于(A<B)和/或一个total变量用于(A=B)。此外,本领域普通技术人员可以理解,通过联合部分连接估计的单独total,该公式可以用于生成所查找的连接大小估计,所述单独total如,在框80中根据公式A<=B(A<B)+(A=B)和/或A<=B100%[CrossProduct(A,B)]-(A>B)的用于A<B的已调整total或用于A=B的未调整total。返回到框78,如果所查找的连接大小估计是大于TableB的数据值的TableA的数据值的数量的估计,则可以通过替换小于公式的变量而在框78中为框77的合并区域生成部分连接估计,所述小于公式包括与框80相关的所讨论公式的第二部分。这样,与框77、78和/或80相关的前面的讨论可以是部分或整体地相关的并且是可适用的。特别地,所述部分连接估计可以通过如下确定A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)并且利用如下方式把为每个合并区域生成的prev值加到框80中的total上foreach(currM,M)prev|currA|*width(currM)*accum(currB)whereinaccum(eurrB)+=|priorB|*width(priorM)或者foreach(currM,M)prev+=|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)可选地,所述公式通常可以表达为A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)返回到框78,如果所述查找的连接大小估计是大于或等于TableB的数据值的TableA的数据值的数量的估计,则通过用三种技术来替换所述变量以估计小于等于TableB的数据值的TableA的数据值的连接大小,而可以在框78中为框77的合并区域生成部分连接估计。相似地,与上述小于等于公式相关的讨论也是相关的,此外,与框77、78和/或80相关的前面的讨论可以是部分或整体地相关的并且是可适用的。特别地,可以通过如下方式确定部分连接估计A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)+1)并且利用如下方式将所述为每个合并区域生成的prev值加到框80中的total上foreach(currM,M)prev|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)或者foreach(currM,M)prev+=|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)可选地,所述公式通常可以表达为A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)此外,公式A>=B(B<A)+(B=A)和/或100%[CrossProduct(B,A)]-(B>A)可以用于为每个合并区域生成两个部分连接估计。本领域普通技术人员可以理解对这些公式进行加和减以及替换变量的能力,并且不引入错误。例如,如果已经存在对于A<B的连接大小估计和对于A=B的连接大小结果,但是通常联合前面计算出的连接大小估计来为A>B生成连接大小估计是不合适的,因为它将导致负值或接近0的值。然而,在此处描述的实施例中,其中的计算是健壮的,所述对A>B的连接大小估计可以根据与本发明一致的|crossproduct|-|A<B|-|A=B|来可靠地计算得到。此外,在没有accum变量时,f(A<B)=f(B<A)的特性也可以用于合并区域。此外,本领域普通技术人员可以理解,可以对附图3中的例程60和/或所述公式进行变化。下面的例子例示了所示实施例的优点。概述地,在第一例子中,在表III中显示了TableA和TableB的多个连接大小估计和合并区域、部分连接估计、可以在例程60的迭代期间确定的accum和prev值。特别地,表I中的“TableA的数据”列包含了TableA的实际数据值,而表I的剩余列描述了TableA的直方图。“下限”和“上限”列描述了TableA的直方图的存储段(即,表I中的每行通常表示一个存储段)的界限,以及“计数”列例示了每个存储段中的单元的数量。第一下限、所有上限和计数的值可以被存储,但是不必与本发明一致。为了简单起见,所述可以被存储的值通过下面的标记^来指出。相似地,表II例示了TableB的数据值并描述了TableB的直方图。表I表II接着,表III详细描述了所包含的用于指出连接大小估计的中间数据。“合并区域”列指定从直方图A和/或直方图B的存储段生成的不同合并区域,以及它们的上界、下界,如,表III中第一合并区域的范围是(-1,0],其中-1是独占的下界而0是包含的上界。特别地,表III中“合并区域”的范围基于TableA的直方图的存储段的界限(即,0,3,8,12),并且基于TableB的直方图的存储段的界限(即,-1,7,32)。|A|和|B|列各自例示了关联于合并区域的直方图A和B的存储段的密度(如,关联于合并区域的TableA的存储段的计数除以存储段的宽度)。可以为每个合并区域计算Accum或Accumulator以及Prev或Previous值,但是所述值可能不被用于等式的连接大小估计中,相反,accum和prev值可以用于所示的两个不等式公式中(即,小于和小于等于)。如前面描述的,Accum是关于有多少TableA的值小于合并区域下限的估计,而Prev是在当前合并区域中TableB的值与来自Accum的TableA的值之间的被估计的叉积。<、=以及<=列是三角形计算。此外,<、=以及<=列的每一行例示了部分连接估计。此外,可以通过关联于所述连接大小估计的total变量来把每个部分连接估计联合起来,如,第一total变量用于对<的连接大小估计,第二total变量用于对=的连接大小估计,以及第三total变量用于对<=的连接大小估计。此外,prev值可以与上面所描述的任意不等式的total变量联合起来。表IIITableA和TableB之间的连接的连接大小估计参考表III,在表III的“合并区域”列中描述的合并区域可以利用前面提及的用于生成合并区域的技术来生成。例如,首先,A.upper[-1]可以指向直方图A的第一存储段的下限,主要是值0,而B.upper[-1]可以指向直方图B的第一存储段的下限,主要是值-1。在比较0和-1时所述最下限值是-1。这样,数组B.upper[j]中的变量j可以被加1到值0,并且所述最下限值-1可以成为第一合并区域的下界。由于合并区域没有完成,因此部分连接估计的计算可以延迟到第二循环迭代。在第二迭代期间,可以比较由A.upper[-1]和B.upper表示的界限值。A.upper[-1]值较小;这样在第二迭代期间最下限值是0。数组A.upper[i]的变量i可以被加l,并且最下限值0可以成为第一合并区域的上界值。接着,所述公式可以用于生成部分连接估计(或如表III中所示的多个部分连接估计),下面将进行更详细地描述,并且如果没有对直方图A和B的存储段的所有界限进行处理,则可以进行另一迭代循环,所述处理通常通过分别将变量i和j与直方图A和B的长度进行比较而标识出来。这样,在第三迭代期间,前一合并区域(即(-1,0])的上界值可以是第三迭代的第二合并区域的下界值,并且第三迭代的第二合并区域的上界值可以是下一个最下限值(即3),其通过比较A.upper和B.upper来确定。此外,可以递增变量i并且利用所述公式为合并区域(0,3]计算部分连接估计等等。这样,例程60中所概括的技术可以被实现并可产生如表III所例示的值。现在,将更详细地描述某些中间值和部分连接估计;然而,由于表III中第一行和第二行中的多个0值不具有特定的说明性,本讨论将从表III的第三行开始。这样,从第三行开始,可以计算|A|或关联于合并区域(3,7]的TableA的直方图的存储段的密度。特别地,TableA的直方图中的存储段3到8是关联于合并区域的存储段,因为所述合并区域与所述存储段重叠(即,值3重叠)。特别地,存储段的计数(即,4)可以除以存储段上限和下限之间的差值(即,8-3=5),结果密度为.8(即,4/8-3=4/5=.8)。接着,为计算|B|,着眼于关联于合并区域的TableB的直方图中的存储段的计数。合并区域(3,7]与具有界限一1和7的直方图B的存储段重叠。这样,相关联存储段具有界限-1和7并且所述相关联存储段的计数(即,4)除以所述相关联存储段的上限和下限之间的差(即,7--1=8),结果是在|B|列的第三行所例示的值.5(即,4/7--1=4/8=.5)。在“宽度”列中的值4例示了合并区域的上界和下界之间的差。换句话说,通常值4可以满足合并区域(3,7],主要地,值3、4、5和6可以满足,但是值7不能满足。在3和7之间可以存在无限个浮点值,但是为了简单,使用了整数。接着,转到Accum列,可以通过把在此之前的行中的|A|值(即,1)乘以在此之前的行中的合并区域的宽度(即,3),并将所述乘积加到在此之前的行中的Aceum值(即,0)上来确定Accum值,结果得到小于当前合并区域的最下限(即,3)的TableA的数据值的数量的估计。这样,估计得到有3个TableA的数据值(即,3*1+0=3)小于值3。Prev指示当前合并区域的TableB的数据值与来自Accum的TableA的数据值数量的被估计的叉积,并且可以通过把当前Accum值(即,3)乘以合并区域(3,7]的当前宽度(即,4)再乘以|B|(即,.5)来计算,得到被估计的叉积6。接着,刚描述的计算值可以插入前面提到的公式以估计部分连接估计。回到第三行,|A|和|B|的值以及所述宽度可以相乘在一起以估计在值3到7的范围中等于TableB中的数据值的TableA中的数据值的数量。这样,.8*.5*4为该合并区域产生估计1.6。为了估计总体上有多少个TableA的数据值等于TableB的数据值,在每个循环迭代期间,为每个合并区域生成的=列下的所有部分连接估计可以被加到所述total变量(未示出)上。这样,得出的连接大小估计是在标为total的行中例示的3.708。此外,由于这不是不等式,所以框80中的total值表示所述连接大小估计并且通常不需要调整。接着,为了得到对<和<=列的部分连接估计,上面所描述的值可以插入<和<=公式。首先,假定所述公式被分为两个部分。考虑第一部分,返回到第三行,考虑小于合并区域(3,7]的TableB的数据值的合并区域(3,7]中的TableA的数据值,0.5乘以|A|和|B|的值、合并区域的宽度、以及合并区域的宽度减1(即,1/2*.8*.5*4*3=2.4),结果得到部分连接估计2.4。相似地,返回到第三行,考虑小于等于合并区域(3,7]的TableB的数据值的合并区域(3,7]中的TableA的数据值,0.5乘以|A|和|B|的值、合并区域的宽度、以及合并区域的宽度加1(即,1/2*.8*.5*4*5=4),结果得到部分连接估计4。此外,前面计算得到的估计了合并区域(3,7]中的数据值的部分连接估计的<的估计(即,2.4)和=的估计(1.6)可以相加以得到估计4。同样,把生成的值插入100%[CrossProduct(A,B)]-(A>B)将相似地得到估计4。如表III的最后一行“连接大小估计”所示,实现了每个<和<=公式的第二部分。特别地,关注表III的最后的连接大小估计,total值表示来自所述公式第一部分的部分连接估计的和,而来自prev值列的所有的prev值(即,prev值的总数43.472)都分别被加到A<B和A<=B的部分连接估计的total(4.62和8.328)上。这样,小于TableB的数据值的TableA的数据值的连接大小估计是48.092,而小于等于TableB的数据值的TableA的数据值的连接大小估计是51.8。可选地,第三行所示的为第三合并区域生成的prev值(即6)可以加到每个不等式的部分连接估计的累计上,即,0+1.5+2.4+6=8.4以及0+3+4+6=10。相似地,为第四合并区域生成的下一prev值(即0.992)和下一相应的部分连接估计可以加到每个累计,即,8.4+0+0.992=9.392以及10+0.128+0.992=11.12,等等。通常,这应该产生相同的连接大小估计,就好像已经应用了两部分的公式一样。本领域普通技术人员可以理解,虽然来自小于、等于和/或小于等于的TableA的数据值的实际数量在数据库查行执行之前可能都是未知的,这就是通常为什么在执行数据库查询之前就生成连接大小估计的原因。然而,分别关注匹配标准的值的实际数量(即,41、3和44),本领域普通技术人员可以理解,在表III中所指示的连接大小估计48.092、3.708和51.8可以是有用的连接大小估计。此外,值得注意的是,A<B和A=B的连接估计(以及实际值)合计达A<=B,即,48.092+3.708=51.8。接着,参考第二个例子,和上面第一个例子一样,在表V中显示TableA和TableC的多个部分连接估计。首先,表I(上面)和表IV每个都分别显示了TableA和TableC中的实际数据,并且分别描述了每个表的直方图。和第一个例子中一样,具有符号^的值(特别是第一下限、上限、以及每个直方图存储段的计数)可以被存储。表IV接着,在表I和表IV中指示的下限和上限可以用于生成如下面表V中“合并区域”列所指示的多个合并区域。相同的公式和相应的计算可以被实现用于得到如表V中所指示的每个合并区域的部分连接估计以及最后的连接大小估计。特别地,小于TableB的数据值的TableA的数据值的被估计的总体连接大小是32,等于TableB的数据值的TableA的数据值的被估计的总体连接大小是6.4,以及小于等于TableB的数据值的TableA的数据值的被估计的总体连接大小是38.4。表VTableA和TableC之间连接的连接大小估计此外,通过调换变量(即,A和C)顺序,并为A>C和A>=C执行计算,可以分别为A>C和A>=C生成最后的连接大小估计41.6和48。此外,本领域普通技术人员可以理解,A<C和A>=C的估计总数是80,并且因此A<=C和A>C的估计总数也一样。此外,由于80是所述连接的叉积的大小(TableA中的数据值10乘以TableB中的数据值8得到80,即80=>80),这通常表明了所述公式是一致的。可以对所示的实施例进行多种修改而不脱离离本发明的精神和范围。因此,本发明在于权利要求。权利要求1.一种用于估计第一和第二表的连接大小的方法,所述方法包括(a)从分别关联于所述第一和第二表的第一和第二直方图中确定多个合并区域,其中每个直方图包括多个区域,并且其中每个合并区域与来自所述第一或第二直方图中的至少一个的区域重叠;(b)对于每个合并区域,为这样的合并区域计算部分连接估计,其中计算所述部分连接估计包括将关联于所述合并区域的第一和第二直方图的任意区域的密度按照关联于所述合并区域的宽度来按比例缩放;以及(c)联合所述部分连接估计。2.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A=B,所述计算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,而width(currM)是所述合并区域的宽度。3.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<B,所述计算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currA)是小于所述合并区域下界的第一表中的数据值的数量的估计。4.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A≤=B,所述计算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currA)是小于所述合并区域下界的第一表中的数据值的数量的估计。5.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A≤=B,所述计算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分连接估计而(A=B)是第二部分连接估计。6.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<=B,所述计算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三个部分连接估计的相加(A<B)、(A=B)和(A>B)。7.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>B,所述计算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currB)是小于所述合并区域下界的第二表中的数据值的数量的估计。8.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currB)是小于所述合并区域下界的第二表中的数据值的数量的估计。9.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分连接估计而(B=A)是第二部分连接估计。10.根据权利要求1所述的方法,其中为合并区域计算部分连接估计包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三个部分连接估计的相加(B<A)、(B=A)和(B>A)。11.根据权利要求1所述的方法,其中所述部分连接估计引入模糊逻辑规则。12.根据权利要求1所述的方法,其中所述合并区域与来自所述第一或第二直方图中的至少一个的区域重叠包括利用所述第一或第二直方图的上限或下限中的至少一个。13.一种装置,包括至少一个处理器;存储器;以及驻留在所述存储器中并配置由所述至少一个处理器执行来估计第一和第二表的连接大小的程序代码,所述估计通过如下方式从分别关联于所述第一和第二表的第一和第二直方图中确定多个合并区域,其中每个直方图包括多个区域,并且其中每个合并区域与来自所述第一或第二直方图中的至少一个的区域重叠,对于每个合并区域,为这样的合并区域计算部分连接估计,其中计算所述部分连接估计包括将关联于所述合并区域的第一和第二直方图的任意区域的密度按照关联于所述合并区域的宽度来按比例缩放,以及联合所述部分连接估计。14.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于所述估计第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A=B,所述计算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,而width(currM)是所述合并区域的宽度。15.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<B,所述计算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currA)是小于所述合并区域下界的第一表中的数据值的数量的估计。16.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<=B,所述计算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currA)是小于所述合并区域下界的第一表中数据值的数量的估计。17.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<=B,所述计算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分连接估计而(A=B)是第二部分连接估计。18.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A<=B,所述计算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三个部分连接估计的相加(A<B)、(A=B)和(A>B)。19.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>B,所述计算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currB)是小于所述合并区域下界的第二表中的数据值的数量的估计。20.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是来自于关联于所述合并区域的第一直方图的区域的密度,|currB|是来自于关联于所述合并区域的第二直方图的区域的密度,width(currM)是所述合并区域的宽度,而accum(currB)是小于所述合并区域下界的第二表中的数据值的数量的估计。21.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表的连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分连接估计而(B=A)是第二部分连接估计。22.根据权利要求13所述的装置,配置为合并区域计算部分连接估计的所述程序代码包括计算用于估计所述第一和第二表连接大小的部分连接估计,所述第一和第二表满足条件A>=B,所述计算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三个部分连接估计的相加(B<A)、(B=A)和(B>A)。23.根据权利要求13所述的装置,其中所述程序代码配置在所述部分连接估计中引入模糊逻辑规则。24.根据权利要求13所述的装置,其中所述合并区域与来自所述第一或第二直方图中的至少一个的区域重叠,所述程序代码进一步配置为利用所述第一或第二直方图的上限或下限中的至少一个。全文摘要一种用于通过生成部分连接估计并联合所述部分连接估计来估计连接大小的程序产品、装置和方法。特别地,提供了健壮的公式,其可以得到更加一致的估计和更少的不准确性。传统的连接大小估计技术通常存在不一致性和不准确性,然而,与本发明一致,可以生成一致的连接大小估计,其在优化期间导致改进的访问计划选择。文档编号G06F17/30GK1979486SQ20061014952公开日2007年6月13日申请日期2006年11月14日优先权日2005年12月8日发明者J·普日瓦拉申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1