專利名稱::估計(jì)第一和第二表連接大小的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)庫管理系統(tǒng),特別地,涉及估計(jì)連接的大小。
背景技術(shù):
:數(shù)據(jù)庫用于為無數(shù)的應(yīng)用存儲(chǔ)信息,所述應(yīng)用包括多種商業(yè)的、工業(yè)的、技術(shù)的、科學(xué)的和教育的應(yīng)用。由于對(duì)信息的依賴的增長(zhǎng),存儲(chǔ)在多數(shù)數(shù)據(jù)庫中的信息量以及想要訪問所述信息的用戶數(shù)量同樣在增長(zhǎng)。此外,由于數(shù)據(jù)庫中的信息量以及想要訪問所述數(shù)據(jù)庫的用戶數(shù)量的增長(zhǎng),用于管理這種數(shù)據(jù)庫所需的計(jì)算資源的數(shù)量也在增長(zhǎng)。數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用于訪問存儲(chǔ)在數(shù)據(jù)庫中的信息的計(jì)算機(jī)程序,因此其常常需要巨大的資源用以處理在這種系統(tǒng)上的繁重的工作量。這樣,投入了大量資源來增加數(shù)據(jù)庫管理系統(tǒng)對(duì)數(shù)據(jù)庫搜索或查詢處理的性能。計(jì)算機(jī)硬件和軟件的改進(jìn)已經(jīng)改進(jìn)了傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的能力。例如,在硬件領(lǐng)域,耦合了改進(jìn)的存儲(chǔ)器管理系統(tǒng)的微處理器性能的增加已經(jīng)改進(jìn)了特定微處理器在給定時(shí)間單元所能執(zhí)行的查詢的數(shù)目。進(jìn)一步地,多個(gè)微處理器和/或多個(gè)連網(wǎng)的計(jì)算機(jī)的使用進(jìn)一步增加了許多數(shù)據(jù)庫管理系統(tǒng)的能力。從軟件的立場(chǎng),關(guān)系數(shù)據(jù)庫的使用充分地改進(jìn)了處理效率,并且充分地簡(jiǎn)化了數(shù)據(jù)庫中信息的創(chuàng)建、組織和擴(kuò)展,其中所述關(guān)系數(shù)據(jù)庫將信息組織為在形式上被定義為包括行和列的表,并且典型地利用如結(jié)構(gòu)化查詢語言(SQL)這樣的標(biāo)準(zhǔn)化語言來訪問。進(jìn)一步地,重要的開發(fā)努力集中在了查詢“優(yōu)化”上,從而以自動(dòng)的方式來優(yōu)化特定搜索或查詢的執(zhí)行以最小化執(zhí)行每個(gè)查詢所需的資源的數(shù)量。查詢優(yōu)化器典型地為每個(gè)提交的查詢產(chǎn)生生成訪問計(jì)劃。在生成訪問計(jì)劃時(shí),查詢優(yōu)化器典型地創(chuàng)建多個(gè)潛在的訪問計(jì)劃,并且基于每個(gè)計(jì)劃的“成本”在那些潛在的訪問計(jì)劃中選擇最佳的計(jì)劃。每個(gè)計(jì)劃的成本表示由所述計(jì)劃期望使用的資源數(shù)量(典型地表示為期望的執(zhí)行時(shí)間數(shù)量),這樣,選擇具有最低成本的計(jì)劃典型地導(dǎo)致最高效(最快)的查詢執(zhí)行。查詢優(yōu)化存在問題的一個(gè)領(lǐng)域是和模糊邏輯搜索有關(guān)。通常,對(duì)查詢數(shù)據(jù)庫引入模糊邏輯規(guī)則產(chǎn)生了更好地反映執(zhí)行查詢的用戶意圖的查詢結(jié)果。通常地,在模糊邏輯之前,用戶必須通過其查詢來任意地量化和/或特征化他們的意圖,這常常導(dǎo)致查詢結(jié)果不能充分地反映他們的意圖。例如,用戶可能想要標(biāo)識(shí)部門中的“優(yōu)秀”員工,如,有優(yōu)秀的銷售額以及良好投訴記錄的員工。通常地,銷售額越高并且對(duì)該員工的無確實(shí)根據(jù)的投訴數(shù)量越少,該員工就越好。但是,如果沒有模糊邏輯,用戶就必須指定該用戶認(rèn)為是優(yōu)秀銷售額的最低銷售額,如,50,000美元或以上的銷售額,以及用戶必須指定該用戶認(rèn)為是良好的無確實(shí)根據(jù)的投訴的數(shù)量,如,少于或等于5個(gè)投訴。該搜索可能被表示為查詢1SELECT*FROMEMPLOYEESWHERESALES>=50000ANDNUM_UNSUBSTANTIATED_COMPLAINTS<=5ORDERBYSALESDESC,NUM_UNSUBSTANTIATED_COMPLAINTSASC利用上述沒有結(jié)合模糊邏輯規(guī)則的查詢,該用戶通常將確切地接收到其所要求的、主要是具有50,000美元或以上銷售額并且無確實(shí)根據(jù)的投訴小于或等于5個(gè)的員工的列表。然而,這樣的搜索可能遺漏銷售額是49,999.99且無確實(shí)根據(jù)的投訴為0的員工或者遺漏具有6個(gè)無確實(shí)根據(jù)的投訴但是銷售額為100,000美元的員工,上述兩者都可能被該用戶認(rèn)為是優(yōu)秀員工。進(jìn)一步,在所述結(jié)果中該用戶可能認(rèn)為具有50,000美元銷售額和0個(gè)無確實(shí)根據(jù)的投訴的員工比具有51,000美元銷售額并具有4個(gè)無確實(shí)根據(jù)的投訴的員工要優(yōu)秀,但是這些沒有被反映出來。相反,模糊邏輯規(guī)則可以用于處理數(shù)據(jù)庫查詢以限定用戶不必通過銷售額和無確實(shí)根據(jù)的投訴數(shù)量的條件來任意地確定構(gòu)成優(yōu)秀員工的條件。通常地,模糊邏輯允許銷售額條件根據(jù)銷售額的連續(xù)函數(shù)進(jìn)行表示以及無確實(shí)根據(jù)的投訴數(shù)量條件根據(jù)無確實(shí)根據(jù)的投訴數(shù)量的連續(xù)函數(shù)進(jìn)行表示。根據(jù)每個(gè)相應(yīng)的連續(xù)函數(shù)的組成員關(guān)系(membership)可以由從0到1的域中的值來測(cè)量。典型地,值“1”指示意味著條件完全滿足的組中100%的成員關(guān)系,以及值“0”指示意味著條件一般不滿足的組中0%的成員關(guān)系。落在0和1之間的值指示組中的某些成員關(guān)系并且可以使用算法來確定。例如,值“.9876”可以指示比值“.1234”更高的在組中的成員關(guān)系。這樣,根據(jù)前面的例子,銷售額組中的成員關(guān)系可以表示為連續(xù)的函數(shù),例如,其中銷售額多于100,000美元指示1的成員關(guān)系,以及例如,銷售額少于40000美元指示0的成員關(guān)系。相似地,無確實(shí)根據(jù)的投訴組中的成員關(guān)系可以表示為連續(xù)的函數(shù),其中例如,如果員工具有少于兩個(gè)無確實(shí)根據(jù)的投訴時(shí),則他或她在組中的成員關(guān)系是1。然而,例如,如果無確實(shí)根據(jù)的投訴數(shù)量多于10,則成員關(guān)系為0。對(duì)于具有多于一個(gè)這種條件的查詢,可以確定每個(gè)組成員關(guān)系并且可以利用組成員關(guān)系值的加權(quán)平均,或者依據(jù)查詢操作(如,與操作、或操作、非操作等)來利用最小的和/或最大的組成員關(guān)系值以生成用戶的優(yōu)秀員工列表。通常地,所述員工列表可以更好地近似于符合用戶意圖的優(yōu)秀員工。例如,可以包括典型地將被如上面所示的通常查詢所遺漏的員工,并且那些被包括的員工典型地基于它們?cè)鯓酉鄬?duì)地符合兩個(gè)條件而進(jìn)行排序。如上面指出的,數(shù)據(jù)庫環(huán)境中引入模糊邏輯規(guī)則可以使查詢優(yōu)化變得復(fù)雜。特別地,它有助于在優(yōu)化期間估計(jì)記錄數(shù)量,所述記錄當(dāng)處理數(shù)據(jù)庫謂詞查詢中的給定條件時(shí)被返回?;谒龉烙?jì),所述優(yōu)化器能夠更好地比較所述訪問計(jì)劃,并且在運(yùn)行時(shí)條件下選出最好的計(jì)劃。確定了上述目標(biāo),表中的數(shù)據(jù)可以被分類并放到柱狀的存儲(chǔ)段(bucket)中,以及可以存儲(chǔ)關(guān)于所述柱狀存儲(chǔ)段的描述信息。例如,存儲(chǔ)段的高低值、每個(gè)存儲(chǔ)段中的記錄數(shù)量以及所述表的高低值都可以被存儲(chǔ)。這樣,優(yōu)化器可以依據(jù)與所述存儲(chǔ)數(shù)據(jù)聯(lián)合的公式來估計(jì)記錄數(shù)量,所述記錄可以根據(jù)給定標(biāo)準(zhǔn)被返回。某些優(yōu)化器還利用所述公式來作額外的估計(jì)。例如,用于估計(jì)小于x(如,x的值可以在例如table1.field1<x這樣的數(shù)據(jù)庫謂詞查詢中)的可以被返回的記錄的數(shù)量的公式可以被重寫,以便估計(jì)小于或等于x的可以被返回的記錄的數(shù)量。通常地,這些技術(shù)適于用來估計(jì)可以根據(jù)給定標(biāo)準(zhǔn)從單一表中返回的記錄的數(shù)量;然而,已經(jīng)發(fā)現(xiàn)了對(duì)在兩個(gè)表的連接操作之后可被返回的記錄數(shù)量(也被稱為連接大小)進(jìn)行估計(jì)會(huì)引起不準(zhǔn)確性和/或不一致性。結(jié)果,優(yōu)化器可以基于所述不準(zhǔn)確性和不一致性在運(yùn)行時(shí)條件下選出次最佳的訪問計(jì)劃。連接典型地是用于根據(jù)某些標(biāo)準(zhǔn)聯(lián)合來自兩個(gè)或多個(gè)不同表的數(shù)據(jù)的操作。連接操作在數(shù)據(jù)庫查詢中是常見的并且通常被用于訪問來自關(guān)系數(shù)據(jù)庫的數(shù)據(jù)。特別地,其數(shù)學(xué)特性(如,(A<B)=1-(A>=B)or(A<=B)=(A<B)+(A=B))通過所述公式被優(yōu)化器用來為例如這些不等式的額外關(guān)系估計(jì)連接大小,所述數(shù)學(xué)特性被應(yīng)用于通常本質(zhì)上“模糊”的值。這樣,為這些不等式估計(jì)連接大小類似于上文中的查詢1,通常導(dǎo)致不適當(dāng)?shù)慕Y(jié)果。特別地,在現(xiàn)代的基于成本的查詢優(yōu)化中,為了更快速地訪問和恢復(fù),與前面的數(shù)據(jù)庫查詢聯(lián)合使用的連接大小估計(jì)(和訪問計(jì)劃)被存儲(chǔ)并被重新使用。然而,在傳統(tǒng)設(shè)計(jì)中,在此上下文中重新使用估計(jì)會(huì)出現(xiàn)問題。例如,如果結(jié)果對(duì)于A<B和A=B早已可用,則在傳統(tǒng)設(shè)計(jì)中聯(lián)合這些結(jié)果來估計(jì)A>B的結(jié)果是不可靠的,因?yàn)槭褂昧藗鹘y(tǒng)計(jì)算|A<=B|+|A>B|<>|叉積(crossproduct)|。相反,|叉積|-|A<=B|可能導(dǎo)致少于或非常接近0的值。負(fù)數(shù)和接近0的數(shù)字通常導(dǎo)致與較大的數(shù)字根本上不同的行為,而這是不希望的。進(jìn)一步地,即使當(dāng)公式?jīng)]有被優(yōu)化器重寫以用于估計(jì)額外的關(guān)系,但如果用戶重新用公式表示數(shù)據(jù)庫查詢也會(huì)導(dǎo)致不一致性。因此在本領(lǐng)域存在對(duì)用于估計(jì)連接大小的改進(jìn)方法的需求,特別是,對(duì)用于對(duì)導(dǎo)致更加一致的估計(jì)的連接大小進(jìn)行估計(jì)的改進(jìn)方法的需求。
發(fā)明內(nèi)容本發(fā)明通過提供一種裝置、程序產(chǎn)品和方法來解決關(guān)聯(lián)于現(xiàn)有技術(shù)的這些和其它問題,所述裝置、程序產(chǎn)品和方法通過生成部分連接估計(jì)并聯(lián)合所述部分連接估計(jì)來計(jì)算連接大小的估計(jì)。所述部分連接估計(jì)的操作可以用于根據(jù)給定條件產(chǎn)生一致的連接大小估計(jì),并且因此使得能夠進(jìn)行在運(yùn)行時(shí)條件下更加優(yōu)化的訪問計(jì)劃的選擇。與本發(fā)明相一致的某些實(shí)施例可以根據(jù)給定條件來為來自于與將被連接的表的直方圖相關(guān)聯(lián)的合并區(qū)域計(jì)算部分連接估計(jì)。此外,部分連接估計(jì)可以被聯(lián)合以計(jì)算連接大小估計(jì)。特別地,可以生成連接大小估計(jì)來估計(jì)記錄的數(shù)量,所述記錄可以在第一表的數(shù)據(jù)值等于、小于、小于等于、大于、和/或大于等于第二表的數(shù)據(jù)值時(shí)被返回??梢酝ㄟ^將來自于與合并區(qū)域相關(guān)聯(lián)的第一表的直方圖的存儲(chǔ)段或區(qū)域的密度和來自于與所述合并區(qū)域相關(guān)聯(lián)的第二表的直方圖的存儲(chǔ)段或區(qū)域的密度按照所述合并區(qū)域的寬度來進(jìn)行比例縮放(scaling),來生成部分連接估計(jì)。所述密度可以通過將存儲(chǔ)段的計(jì)數(shù)除以存儲(chǔ)段的寬度來計(jì)算。所述存儲(chǔ)段的計(jì)數(shù)表示在存儲(chǔ)段中數(shù)據(jù)值的數(shù)量??梢栽诿芏鹊目s放中引入模糊邏輯規(guī)則,這樣,所述密度的值可以是在0和1之間的值。結(jié)果,部分連接估計(jì),以及通過聯(lián)合所述部分連接估計(jì)而最終產(chǎn)生的連接大小估計(jì)可以更一致,因?yàn)樗鼈兛梢曰诤喜⒘四:壿嬕?guī)則的所述進(jìn)行過縮放的密度。表征本發(fā)明的這些以及其它優(yōu)點(diǎn)和特征在權(quán)利要求中闡明并形成本發(fā)明的進(jìn)一步的部分。然而,為了更好理解本發(fā)明以及通過其使用所獲得的優(yōu)點(diǎn)和目標(biāo),應(yīng)當(dāng)參考附圖以及所附的描述主題,在其中描述了本發(fā)明的示例性實(shí)施例。圖1是引入了數(shù)據(jù)庫管理系統(tǒng)的連網(wǎng)計(jì)算機(jī)系統(tǒng)的框圖,在所述數(shù)據(jù)庫管理系統(tǒng)中實(shí)現(xiàn)了與本發(fā)明相一致的查詢優(yōu)化。圖2是例示在圖1的數(shù)據(jù)庫管理系統(tǒng)的主要組件和在其之間的信息流的框圖。圖3是例示了用于圖1的數(shù)據(jù)庫管理系統(tǒng)中的連接大小估計(jì)例程的一個(gè)實(shí)現(xiàn)的程序流的流程圖。圖4是用于表A的直方圖A的一個(gè)實(shí)現(xiàn)和用于表B的直方圖B的一個(gè)實(shí)現(xiàn),以及可以從中生成的合并區(qū)域的圖。具體實(shí)施例方式此后討論的實(shí)施例通過生成部分連接估計(jì)并聯(lián)合所述部分連接估計(jì)來計(jì)算連接大小估計(jì)。例如,連接大小估計(jì)可以估計(jì)記錄數(shù)量,所述記錄可以在第一表的數(shù)據(jù)值等于、小于、小于等于、大于、和/或大于等于第二表的數(shù)據(jù)值時(shí)被返回。通常地,下面描述的用于估計(jì)連接大小的公式在本質(zhì)上是健壯的,即,它們產(chǎn)生一致的估計(jì)。在此包括了用于對(duì)前面提及的每個(gè)關(guān)系計(jì)算連接大小估計(jì)的健壯的公式并且將結(jié)合附圖3中的例程60來進(jìn)行討論。如上面指出的,連接大小估計(jì)可以基于多個(gè)部分連接估計(jì)的聯(lián)合。在這點(diǎn)上,部分連接估計(jì)可以是在生成所述連接大小估計(jì)時(shí)使用合并區(qū)域所計(jì)算出的任何中間估計(jì)。合并區(qū)域可以是從將被連接的表的直方圖的至少一部分中形成的任何區(qū)域。在所例示的實(shí)施例中,可以從將被連接的表的直方圖生成多個(gè)合并區(qū)域,并且在將被連接的表的直方圖中存在的合并區(qū)域可以比存儲(chǔ)段更多。通常地,在所例示的實(shí)施例中定義的合并區(qū)域可以包括下界(lowrange)和上界(highrange),所述下界是獨(dú)占的而所述上界是包括的。此外,合并區(qū)域的上界可以是下一個(gè)合并區(qū)域的下界。所述合并區(qū)域的下界和上界可以重疊于將被連接的表的直方圖的一個(gè)區(qū)域,即,合并區(qū)域的下界和/或上界可以是來自于將被連接的表的直方圖的存儲(chǔ)段的界限(bound)。例如,合并區(qū)域的下界可以是將被連接的第一表的第一直方圖的存儲(chǔ)段的下限(lowerbound)以及合并區(qū)域的上界可以是將被連接的第二表的第二直方圖的存儲(chǔ)段的上限(upperbound)。此外,合并區(qū)域的所述下界和上界可以是來自將被連接的表的單一直方圖。例如,合并區(qū)域的所述下界和上界可以和直方圖存儲(chǔ)段的下限和上限相一致,但是與本發(fā)明相一致的實(shí)施例中不必是這種情況。合并區(qū)域的生成將結(jié)合附圖3中的例程60進(jìn)行進(jìn)一步的討論。進(jìn)一步,為了簡(jiǎn)單起見,參考在整個(gè)此申請(qǐng)中的表,如,表的直方圖、連接表和/或相似物;然而,讀者應(yīng)該明白,所述參考也可以指所述表的特定的列,如本領(lǐng)域普通技術(shù)人員可以理解的一樣?,F(xiàn)在參考附圖,其中在若干視圖中相同的數(shù)字代表相同的部分,圖1例示了裝置10的示例性的硬件和軟件環(huán)境,所述裝置10適合于實(shí)現(xiàn)引入了與本發(fā)明一致的查詢優(yōu)化的數(shù)據(jù)庫管理系統(tǒng)。為了本發(fā)明的目的,裝置10實(shí)際上可以表示任意類型的計(jì)算機(jī)、計(jì)算機(jī)系統(tǒng)或其它可編程電子設(shè)備,包括客戶端計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持計(jì)算機(jī)、嵌入式控制器等。此外,裝置10可以利用一個(gè)或多個(gè)連網(wǎng)的計(jì)算機(jī)(如,在一個(gè)集群或其它分布式計(jì)算機(jī)系統(tǒng)中)來實(shí)現(xiàn)。下文中,裝置10也指“計(jì)算機(jī)”,盡管應(yīng)該認(rèn)識(shí)到,術(shù)語“裝置”還可以包括與本發(fā)明相一致的其它適合的可編程電子設(shè)備。計(jì)算機(jī)10典型地包括中央處理單元(CPU)12,所述中央處理單元包含一個(gè)或多個(gè)耦合到存儲(chǔ)器14的微處理器,所述存儲(chǔ)器可以表示包括計(jì)算機(jī)10主存儲(chǔ)器以及的隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備,也可以表示任意輔助級(jí)別的存儲(chǔ)器,如,高速緩沖存儲(chǔ)器、非易失性或備份存儲(chǔ)器(如,可編程或閃速存儲(chǔ)器)、只讀存儲(chǔ)器等。此外,存儲(chǔ)器14可以被認(rèn)為包括物理上位于計(jì)算機(jī)10中其它地方的存儲(chǔ)器,如,在CPU12的處理器中的任意高速緩沖存儲(chǔ)器,以及例如存儲(chǔ)在海量存儲(chǔ)裝置16或耦合到計(jì)算機(jī)10上的另一計(jì)算機(jī)上的用作虛擬存儲(chǔ)器的任意存儲(chǔ)容量。計(jì)算機(jī)10也典型地接收多個(gè)輸入和輸出以用于和外部進(jìn)行信息傳送。對(duì)于與用戶或操作者的接口,計(jì)算機(jī)10典型地包括合并一個(gè)或多個(gè)用戶輸入設(shè)備(如,鍵盤、鼠標(biāo)、軌跡球、操縱桿、觸摸板和/或麥克風(fēng)、以及其它)和顯示器(如,CRT監(jiān)視器、LCD顯示面板和/或揚(yáng)聲器、以及其它)的用戶接口18。另外,用戶輸入可以通過另一計(jì)算機(jī)或終端接收,如,通過客戶端或通過網(wǎng)絡(luò)22耦合到計(jì)算機(jī)10上的單用戶計(jì)算機(jī)20。后一實(shí)現(xiàn)是所希望的,其中計(jì)算機(jī)10被實(shí)現(xiàn)為服務(wù)器或其它形式的多用戶計(jì)算機(jī)。然而,應(yīng)該理解,計(jì)算機(jī)10在某些實(shí)施例中還可以被實(shí)現(xiàn)為獨(dú)立的工作站、臺(tái)式機(jī)、或其它單用戶計(jì)算機(jī)。對(duì)于非易失性存儲(chǔ)裝置,計(jì)算機(jī)10典型地包括一個(gè)或多個(gè)海量存儲(chǔ)設(shè)備16,如,軟盤或其它可移除盤驅(qū)動(dòng)器、硬盤驅(qū)動(dòng)器、直接存取存儲(chǔ)設(shè)備(DASD)、光驅(qū)動(dòng)器(如,CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器等)、和/或磁帶驅(qū)動(dòng)器、以及其它。此外,計(jì)算機(jī)10還可以包括與一個(gè)或多個(gè)網(wǎng)絡(luò)22(如,LAN、WAN、無線網(wǎng)絡(luò)、和/或因特網(wǎng),以及其它)之間的接口24以允許與其它計(jì)算機(jī)和電子設(shè)備進(jìn)行信息傳送。應(yīng)該理解,計(jì)算機(jī)10典型地包括如本領(lǐng)域公知的在CPU12和組件14、16、18和24中的每個(gè)之間的適合的模擬和/或數(shù)字接口。計(jì)算機(jī)10在操作系統(tǒng)26的控制下運(yùn)行,并執(zhí)行或者依賴于多種計(jì)算機(jī)軟件應(yīng)用、組件、程序、對(duì)象、模塊、數(shù)據(jù)結(jié)構(gòu)等。例如,數(shù)據(jù)庫管理系統(tǒng)(DBMS)28可以駐于存儲(chǔ)器14中以訪問駐于海量存儲(chǔ)裝置16中的數(shù)據(jù)庫30。此外,多種應(yīng)用、組件、程序、對(duì)象、模塊等也可以在通過網(wǎng)絡(luò)耦合到計(jì)算機(jī)10的另一計(jì)算機(jī)中的一個(gè)或多個(gè)處理器上執(zhí)行,如,在分布式或客戶端-服務(wù)器計(jì)算環(huán)境中,其中實(shí)現(xiàn)計(jì)算機(jī)程序功能所需的處理通過網(wǎng)絡(luò)分配到多個(gè)計(jì)算機(jī)。通常地,被執(zhí)行以實(shí)現(xiàn)本發(fā)明實(shí)施例的所述例程,不論作為操作系統(tǒng)或者特定應(yīng)用、組件、程序、對(duì)象、模塊或指令序列、或甚至它們的子集的一部分被實(shí)現(xiàn),在此都是指“計(jì)算機(jī)程序代碼”或簡(jiǎn)稱“程序代碼”。程序代碼典型地包括在多個(gè)時(shí)刻駐留在計(jì)算機(jī)的多個(gè)存儲(chǔ)器和存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)指令,以及,當(dāng)被計(jì)算機(jī)的一個(gè)或多個(gè)處理器讀取并執(zhí)行時(shí),使得計(jì)算機(jī)執(zhí)行用于執(zhí)行體現(xiàn)本發(fā)明多個(gè)方面的單元或步驟所必須的步驟。此外,盡管本發(fā)明具有并且此后在具有完全功能的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)的環(huán)境中將描述的實(shí)施例,但本領(lǐng)域技術(shù)人員將理解,本發(fā)明的多個(gè)實(shí)施例能夠以多種形式作為程序產(chǎn)品被分發(fā),并且不論用于實(shí)際執(zhí)行所述分發(fā)的特定類型的計(jì)算機(jī)可讀媒體,本發(fā)明都可以同等地進(jìn)行應(yīng)用。計(jì)算機(jī)可讀媒體的例子包括但不限于有形的、可記錄類型媒體(如易失性和非易失性存儲(chǔ)器設(shè)備、軟盤和其它可移除盤、硬盤驅(qū)動(dòng)器、磁帶、光盤(如,CD-ROM、DVD等),以及其它)以及傳輸類型媒體(例如數(shù)字和模擬通信鏈路)。此外,此后描述的多種程序代碼可以基于所述應(yīng)用被標(biāo)識(shí),其中在所述應(yīng)用中在本發(fā)明的特定實(shí)施例中實(shí)現(xiàn)所述應(yīng)用。然而,應(yīng)理解,下面所使用的任意特定程序術(shù)語僅僅是為了方便,并且因此本發(fā)明不應(yīng)當(dāng)限于唯一地使用在由這樣的術(shù)語所定義和/或暗示的任意特定應(yīng)用中。進(jìn)一步地,盡管給定典型地?zé)o窮多的方式,其中計(jì)算機(jī)程序可以被組織為例程、過程、方法、模塊、對(duì)象等,還可以給定多種方式,其中可以對(duì)駐留在典型計(jì)算機(jī)中的多種軟件層(如,操作系統(tǒng)、庫、API、應(yīng)用、小應(yīng)用程序等)之間分配程序功能,但應(yīng)理解,本發(fā)明不限于此處描述的程序功能的特定組織和分配。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,圖1所例示的示例性環(huán)境的目的并不是限制本發(fā)明。實(shí)質(zhì)上,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,可以使用其它可選的硬件和/或軟件環(huán)境而不脫離本發(fā)明的范圍。圖2接著更加詳細(xì)地例示了DBMS28的一個(gè)實(shí)現(xiàn)中的主要組件。通常與查詢執(zhí)行相關(guān)的所述DBMS28的主要組件是結(jié)構(gòu)化查詢語言(SQL)分析器40、查詢優(yōu)化器42和數(shù)據(jù)庫引擎44。SQL分析器40從用戶(或更典型地,從由用戶執(zhí)行的應(yīng)用)接收數(shù)據(jù)庫查詢46,其在所示的實(shí)施例中以SQL語句的形式提供。然后SQL分析器40從中生成已分析語句48,其被傳送到用于查詢優(yōu)化的優(yōu)化器42。作為查詢優(yōu)化的結(jié)果,生成執(zhí)行或訪問計(jì)劃50。一旦生成之后,所述執(zhí)行計(jì)劃被轉(zhuǎn)發(fā)到用于對(duì)數(shù)據(jù)庫30中的信息執(zhí)行數(shù)據(jù)庫查詢的數(shù)據(jù)庫引擎44。所述數(shù)據(jù)庫查詢的執(zhí)行結(jié)果典型地存儲(chǔ)在結(jié)果集合中,如框52所示。為了便于優(yōu)化,可以在DBMS28中引入統(tǒng)計(jì)管理器54。通常地,與本發(fā)明相一致的實(shí)施例中的DBMS能夠確定來自將被連接的表的直方圖的多個(gè)合并區(qū)域。此外,所述DBMS能夠?yàn)槊總€(gè)合并區(qū)域計(jì)算部分連接估計(jì)并且聯(lián)合所述部分連接估計(jì)。所述部分連接估計(jì)可以基于在此包括的健壯的公式。圖3接著例示例程60,其是連接大小估計(jì)例程的示例性實(shí)現(xiàn),其確定合并區(qū)域、為合并區(qū)域計(jì)算部分連接估計(jì)、以及聯(lián)合所述部分連接估計(jì)以生成可以被DBMS用來執(zhí)行優(yōu)化的連接大小估計(jì)。將被連接的表可以從數(shù)據(jù)庫查詢來確定。特別地,例程60利用合并了模糊邏輯規(guī)則的健壯的公式來生成估計(jì)。轉(zhuǎn)到例程60,例程60依賴于用于將被連接的表的直方圖的存在。特別地,整個(gè)例程60中,引用和操作用于表A的直方圖A和用于表B的直方圖B、直方圖A和直方圖B的存儲(chǔ)段、以及直方圖A和直方圖B的上下限。本領(lǐng)域普通技術(shù)人員公知的任意技術(shù)都可用于生成所述直方圖。參考框62,在框62中多種變量被引用并初始化。變量i用于通過直方圖A的存儲(chǔ)段進(jìn)行循環(huán),而變量j用于通過直方圖B的存儲(chǔ)段進(jìn)行循環(huán)。特別地,A.upper[i]和B.upper[j]分別表示直方圖A和B的存儲(chǔ)段的數(shù)組。通常地,A.upper[i]和B.upper[j]可以分別用于通過直方圖A和B的存儲(chǔ)段的下限和/或上限進(jìn)行迭代。特別地,變量i和j被初始化為值負(fù)1。A.upper[-1]表示直方圖A的第一存儲(chǔ)段的下限,而B.upper[-1]表示直方圖B的第一存儲(chǔ)段的下限。對(duì)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表示各自直方圖的存儲(chǔ)段的數(shù)量。這樣,可以在直方圖中具有無窮數(shù)量的界限。total變量表示為每個(gè)合并區(qū)域所計(jì)算的部分連接估計(jì)的累計(jì),而accum變量表示用于不等式的累加器。所述accum變量通常表示在直方圖A中有多少個(gè)值小于合并區(qū)域的下界的估計(jì)(結(jié)合框78作了更詳細(xì)的討論)。prev變量通常表示在合并區(qū)域中的直方圖B中的值和來自accum變量的直方圖A中的值之間的叉積(結(jié)合框78作了更詳細(xì)的討論)。所述accum和/或prev變量可以用于為不等式估計(jì)部分連接估計(jì)和連接大小,所述不等式如,<、<=、>和/或>=。所述變量total、accum和prev可以在框62中被初始化為值0。接著,在框64中,直方圖A和直方圖B可以例如從存儲(chǔ)器中被讀取。例如在框64中,當(dāng)直方圖A和B被生成之后,可以利用本領(lǐng)域普通技術(shù)人員已知的任意技術(shù)將所述直方圖存儲(chǔ)到存儲(chǔ)器并讀取。直方圖A和直方圖B可以根據(jù)需要被讀取。接著,在框66中,直方圖A和B的存儲(chǔ)段的界限(即,下限和/或上限)被相互比較,并且基于所述比較,控制可以轉(zhuǎn)到框68、框70或框72。需要特別指出,在從框64擴(kuò)展到78的循環(huán)的第一迭代中,所述變量i和j被首先被設(shè)置為負(fù)1,即A.upper[-1]和B.upper[-1],因?yàn)樽兞縤和j在框62中被初始化為負(fù)1。因此,A.upper[-1]指直方圖A的第一存儲(chǔ)段的下限,而B.upper[-1]指直方圖B的第一存儲(chǔ)段的下限。返回框66,可以執(zhí)行對(duì)A.upper[i]和B.upper[j]的比較以確定最下限的值。如果由A.upper[i]表示的所述界限值小于由B.upper[j]表示的界限值,那么最下限值是A.upper[i]的值,并且控制轉(zhuǎn)到框68。此外,在框68中變量i遞增1。另一方面,重新回到框66,如果由A.upper[i]表示的所述界限值大于由B.upper[j]表示的界限值,那么最下限值是B.upper[j]的值,并且控制轉(zhuǎn)到框72。在框72中,變量j可以加1。然而,如果由A.upper[i]表示的界限值等于由B.upper[j]表示的界限值,則最下限值是A.upper[i]或B.upper[j]的值,并且控制轉(zhuǎn)到框70。在框70中,變量i和j可以各自加1。變量通常被加1,這樣在下一個(gè)迭代循環(huán)中,可以比較直方圖A和B的界限值。例如,通過將變量i加1,直方圖A的下一界限值可以通過A.upper[i]進(jìn)行訪問,并且與B.upper[j]的界限值進(jìn)行比較,該界限值不是新的界限值(例如如果j遞增1)、就是與B.upper[j]相同的界限值。相似地,通過將變量j加1,直方圖B的下一界限值可以通過B.upper[j]進(jìn)行訪問,并且與A.upper[i]的界限值進(jìn)行比較,該界限值不是新的界限值(例如如果i遞增1)、就是與A.upper[i]相同的界限值。接著,控制從框68、70或72轉(zhuǎn)到框76???6確定循環(huán)是否結(jié)束。特別地,在框76中,確定變量i是否等于A.length以及變量j是否等于B.length。A.length和B.length分別表示直方圖A和直方圖B中的存儲(chǔ)段的數(shù)量。如果框76的條件符合,則控制轉(zhuǎn)到框80并且所述例程結(jié)束。在框80中,所述total的值通常表示部分連接估計(jì)的聯(lián)合,然而,所述total的值可以在框80中根據(jù)所使用的公式和/或所查找的連接大小估計(jì)進(jìn)行調(diào)整。如果框76的條件不符合,則控制轉(zhuǎn)到框77以生成包括其下界和上界的合并區(qū)域,然后控制轉(zhuǎn)到框78,以為所述合并區(qū)域計(jì)算部分連接估計(jì),并且利用所述total值聯(lián)合所述部分連接估計(jì)。為進(jìn)一步示例合并區(qū)域的概念,圖4一般地例示了可以從直方圖A和B的一個(gè)示例性實(shí)現(xiàn)中生成的合并區(qū)域。所例示的直方圖A具有四個(gè)存儲(chǔ)段,而直方圖B具有六個(gè)存儲(chǔ)段。在直方圖A和B中,每對(duì)垂直線表示一個(gè)存儲(chǔ)段。此外,基于直方圖A和B例示了十個(gè)合并區(qū)域。每對(duì)垂直線表示一個(gè)合并區(qū)域。返回圖3,從框66中的比較中確定的最下限值可變?yōu)榭?7中合并區(qū)域的下界或者上界。換句話說,所述合并區(qū)域可以與直方圖A和/或直方圖B的區(qū)域或存儲(chǔ)段重疊。通常地,合并區(qū)域可以由獨(dú)占的下界和包含的上界構(gòu)成,如,(-1,0]。是否可以把從框66確定的最下限值指定為所述合并區(qū)域的下界或上界可以取決于所述合并區(qū)域是否已經(jīng)具有下界。此外,在與本發(fā)明相一致的實(shí)施例中,合并區(qū)域的上界可以變成下一合并區(qū)域的下界。本領(lǐng)域普通技術(shù)人員可以理解,通常合并區(qū)域可以利用如下算法通過在直方圖A和B之間進(jìn)行迭代來憑空構(gòu)造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是合并區(qū)域,currA表示直方圖A的當(dāng)前界限,而currB是直方圖B的當(dāng)前界限。UB表示上限而LB表示下限。HR表示上界而LR表示下界。nextA和nextB各自表示直方圖A和B的下一界限。值得注意的是,在第一循環(huán)迭代期間,將被生成的第一合并區(qū)域可能不具有下界或上界。這樣,從框66確定的最下限值可以是第一合并區(qū)域的下界。此外,在第二循環(huán)迭代期間,從框66確定的后續(xù)最下限值可以變?yōu)榈谝缓喜^(qū)域的上界。這樣,第一合并區(qū)域以及其下界和上界的創(chuàng)建可以依據(jù)兩次循環(huán)迭代。此外,本領(lǐng)域普通技術(shù)人員可以了解,在第一合并區(qū)域被創(chuàng)建之后,在兩次循環(huán)迭代之后,所述第一合并區(qū)域的上界可以變?yōu)橄乱缓喜^(qū)域的下界,并且從框66確定的下一最下限值可以變?yōu)橄乱缓喜^(qū)域的上界,依此類推。這樣,合并區(qū)域的下界可以是前一合并區(qū)域的上界,并且所述合并區(qū)域的上界可以是從框66確定的下一最下限值。作為例子,在第一循環(huán)迭代期間,由框66確定的最下限值可以是2;這樣在框77中所述第一合并區(qū)域可以具有下界2,即(2,_]。在第二循環(huán)迭代期間,由框66確定的所述最下限值可以是4;這樣在框77中所述第一合并區(qū)域的上界可以為4,即(2,4]。在第三循環(huán)迭代期間,下一合并區(qū)域的下界可以是前一合并區(qū)域的上界,即4,以及所述合并區(qū)域的上界可以是框66確定的下一最下限的值,如9。這樣,在第三迭代期間,在框77中所述合并區(qū)域可以是(4,9))。此外,值得注意的是,循環(huán)的順序可以改變。例如,框77的動(dòng)作可以在框66之后并且在框68、70和/或72之前執(zhí)行。接著,在框78中可以為所述合并區(qū)域計(jì)算部分連接估計(jì)并且將所述部分連接估計(jì)與total變量進(jìn)行聯(lián)合。如上文所提到的,直到第二迭代才生成第一合并區(qū)域;這樣,框78在第一循環(huán)迭代期間可以被跳過。但是,依據(jù)所查找的連接大小估計(jì)的類型,可以利用此后給出的五個(gè)公式之一來為所述合并區(qū)域計(jì)算所述部分連接估計(jì)。此外,在框78中可以計(jì)算多于一個(gè)的部分連接估計(jì)。例如,在下面例示的例子中,在表III和表V中例示了三個(gè)連接大小估計(jì)以及導(dǎo)致所述連接大小估計(jì)的部分連接估計(jì)。這樣,可以具有多于一個(gè)的total變量,如,對(duì)于每個(gè)連接大小估計(jì),可以通過部分連接估計(jì)更新不同的total值。此外,值得注意的是,某些公式可以分離成兩個(gè)部分。例如,第一部分可以用于生成部分連接估計(jì),而后一部分可以在所有部分連接估計(jì)都被聯(lián)合之后使用。所述公式是否可以分為兩個(gè)部分可以取決于所查找的連接大小估計(jì),如,<和<=公式可以被分離。然而,所述公式不必進(jìn)行分離。但是,所述公式通常依據(jù)平均分布假設(shè)和模糊邏輯規(guī)則。這樣,所述公式避免生成之外的密度并且可以導(dǎo)致更加一致的估計(jì)以及增加全面的準(zhǔn)確性。在利用公式之一生成所述部分連接估計(jì)并且將其和相應(yīng)的total變量進(jìn)行聯(lián)合之后,控制轉(zhuǎn)到框64。每個(gè)公式將在下面進(jìn)行單獨(dú)討論。如果所查找的連接大小估計(jì)是等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計(jì),則可以基于下面的公式在框78中為框77的合并區(qū)域生成部分連接估計(jì)A=Bforeach(currM,M)total+=|currA|*|currB|*width(currM)通??梢岳眠@個(gè)公式為每個(gè)合并區(qū)域計(jì)算部分連接估計(jì)。術(shù)語|currA|表示關(guān)聯(lián)于當(dāng)前合并區(qū)域(即,currM)的直方圖A的當(dāng)前存儲(chǔ)段的密度。術(shù)語|currB|表示關(guān)聯(lián)于當(dāng)前合并區(qū)域的直方圖B的當(dāng)前存儲(chǔ)段的密度。關(guān)聯(lián)于合并區(qū)域的存儲(chǔ)段指直方圖A和直方圖B中的存儲(chǔ)段,其中所述合并區(qū)域完全在存儲(chǔ)段的界限中和/或所述合并區(qū)域與存儲(chǔ)段的一部分重疊,如,合并區(qū)域的上界與直方圖A的存儲(chǔ)段的下限相同。存儲(chǔ)段的密度可以通過把存儲(chǔ)段的計(jì)數(shù)除以存儲(chǔ)段的寬度來確定。存儲(chǔ)段的計(jì)數(shù)可以存儲(chǔ)在例如A.bucket_counts[]的數(shù)組中,并且可以在框64中被讀取。通常地,A.bucket_counts[-1]、B.bucket_counts[-1]、A.bucket_counts[A.length]和B.bucket_counts[B.length]可以被初始化為0,并且當(dāng)所述值被讀入時(shí)可以被更新。典型地,存儲(chǔ)段的計(jì)數(shù)表示存儲(chǔ)段中數(shù)據(jù)值的數(shù)量,存儲(chǔ)段的寬度表示存儲(chǔ)段的上界和下界的差,而合并區(qū)域的寬度表示合并區(qū)域的上界和下界的差?;诎?、相鄰獨(dú)占的區(qū)域和/或直方圖的存儲(chǔ)方式,需要通過對(duì)存儲(chǔ)段的寬度加1或減1來對(duì)存儲(chǔ)段的寬度進(jìn)行調(diào)整。符號(hào)“*”被引用于整個(gè)具體實(shí)施方式中并且表示相乘。這樣,根據(jù)這個(gè)公式,為了為合并區(qū)域生成部分連接估計(jì),密度currA與密度currB相乘,并且與合并區(qū)域的寬度相乘。此外,通過公式為每個(gè)合并區(qū)域計(jì)算的部分連接估計(jì)可以與total值聯(lián)合,如,通過相加的方式。total變量通常保持為為每個(gè)合并區(qū)域生成的每個(gè)部分連接估計(jì)的累計(jì)。一旦為所述第一合并區(qū)域生成部分連接估計(jì),則可能在兩次循環(huán)迭代之后,在每個(gè)后繼的循環(huán)迭代期間可以利用這個(gè)公式生成部分連接估計(jì)并且將其加到total值。當(dāng)控制最終轉(zhuǎn)到框80時(shí),在框80中的total值將表示為條件(A=B)時(shí)的連接大小估計(jì),而對(duì)于條件(A=B),進(jìn)一步調(diào)整total變量也許是不合適的。返回到框78,如果所查找的連接大小估計(jì)是小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計(jì),則可以基于下面的公式在框78中為框77的合并區(qū)域生成部分連接估計(jì)A<Bforeach(currM,M)total+=1/20*|currA|*|currB|*width(currM)*(width(currM)-1)特別地,提供(width(currM)-1)來排除來自于與合并區(qū)域相關(guān)聯(lián)的相等的直方圖A和直方圖B存儲(chǔ)段的數(shù)據(jù)值。一般地利用這個(gè)公式可以為每個(gè)合并區(qū)域計(jì)算部分連接估計(jì)。與框77、78和/或80相關(guān)的前面討論可以是部分地或全部地相關(guān)的和可適用的。此外,當(dāng)所查找的連接大小估計(jì)用于不等式時(shí),可以為框78中的每個(gè)合并區(qū)域計(jì)算accum變量值和prev變量值。所述accum變量是比合并區(qū)域的下界更小的TableA的數(shù)據(jù)值的數(shù)量的累計(jì),通常被表示為foreach(currM,M)accum(currA)+=|priorA|*width(priorM)可以通過將關(guān)聯(lián)于前一合并區(qū)域的直方圖A的存儲(chǔ)段的密度(即priorA)和前一合并區(qū)域的寬度(即priorM)相乘,并將該乘積加到所述accum值來為每個(gè)合并區(qū)域計(jì)算accum變量的值。通常,當(dāng)所查找的連接大小估計(jì)是小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計(jì)時(shí),所述accum允許例程60執(zhí)行一遍??梢酝ㄟ^foreach(currM,M)prev|currB|*width(currM)*accum(currA)來為每個(gè)合并區(qū)域計(jì)算所述prev值。所述prev值是關(guān)聯(lián)于合并區(qū)域的TableB的直方圖的存儲(chǔ)段的數(shù)據(jù)值與來自accum的關(guān)聯(lián)于合并區(qū)域的TableA的直方圖的存儲(chǔ)段的數(shù)據(jù)值之間的被估計(jì)的叉積。第一合并區(qū)域的accum值和/或prev值可以為0,因?yàn)樵诘谝缓喜^(qū)域之前可能沒有基于accum和/或prev變量的計(jì)算的值。特別地,為循環(huán)的每個(gè)合并區(qū)域計(jì)算的部分連接估計(jì)可以與total值聯(lián)合,其保持為為每個(gè)合并區(qū)域生成的每個(gè)部分連接估計(jì)的累計(jì)。然而,如果在框76確定變量i等于A.length以及變量j等于B.length并且控制轉(zhuǎn)到框80,則在框80中為每個(gè)合并區(qū)域生成的prev值可以加到total變量上。這樣,變量prev可以用在與框80有關(guān)的公式的第二部分中。特別地,在框80中,合并了accum值的prev值可以加到total值上。這樣,所查詢的連接大小估計(jì)可以基于prev值和total值的和。換句話說,在框80中prev值的總數(shù)可以加到部分連接估計(jì)的總數(shù)(即total)上。雖然框80可能不適合于等于TableB的TableA的數(shù)據(jù)值的連接大小估計(jì),但在框80中total變量的調(diào)整可以適合于小于TableB的TableA的數(shù)據(jù)值的連接大小估計(jì)。此外,值得注意的是,本領(lǐng)域普通技術(shù)人員可以理解,該公式可以相似于計(jì)算三角形面積。特別地,所述估計(jì)可以通過將重疊total(三角形)加到prev值(矩形)而得到。另一方面,通??梢酝ㄟ^用為每個(gè)合并區(qū)域生成的prev值來增加total值以代替在框80中把prev值加到total值上來為每個(gè)合并區(qū)域計(jì)算小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計(jì)。這樣,total的部分連接估計(jì)的累計(jì)還可以合并為每個(gè)合并區(qū)域生成的prev值的累計(jì)。因此,所述公式可選地可以表達(dá)如下A<Bforeach(currM,M)total+=1/2*|currA|*currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)特別地,在每個(gè)迭代期間通常可以利用每個(gè)合并區(qū)域的prev值來增加total值。這樣,在框80,可以不必通過prev值的增加來調(diào)整total值。結(jié)果,可以在與本發(fā)明一致的某些實(shí)施例中省略框80。本領(lǐng)域普通技術(shù)人員可以理解,用兩部分表達(dá)的公式與單一公式之間的主要差別是把prev值加到total上,所述用兩部分表達(dá)的公式即,total表示為每個(gè)合并區(qū)域生成的部分連接估計(jì)的累計(jì)以及把為每個(gè)合并區(qū)域生成的所有prev值加到部分連接估計(jì)的最后total總數(shù)上,所述單一公式即,為每個(gè)合并區(qū)域把所述部分連接估計(jì)和prev值加到每個(gè)合并區(qū)域的total值上。此外,本領(lǐng)域普通技術(shù)人員可以了解,可以對(duì)在此描述的公式進(jìn)行其它修改,這樣,本發(fā)明的范圍不應(yīng)該局限于此處的特定實(shí)施例。返回到框78,如果所查詢的連接大小估計(jì)是小于或等于TableB數(shù)據(jù)值的TableA數(shù)據(jù)值的數(shù)量的估計(jì),則基于如下公式可以在框78中為框77的合并區(qū)域生成部分連接估計(jì)A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)-1)此外,為每個(gè)合并區(qū)域生成的所有prev值都可以通過如下公式計(jì)算foreach(currM,M)prev|currB|*width(currM)*accum(currA)并且將其加到框80中的total值上。換句話說,為每個(gè)合并區(qū)域生成的prev值的累計(jì)可以象total變量一樣地被保持,并且在框80中prev值的累計(jì)可以加到total值上以生成所查找的連接大小估計(jì)。例如,prev值的累計(jì)可以通過如下方式生成foreach(currM,M)prev+=|currB|*width(currM)*accum(currA)對(duì)于小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的連接大小估計(jì)進(jìn)行估計(jì)的討論可以是部分地或全部地可適用的。所述公式的主要差別在于所述合并區(qū)域?qū)挾鹊脑黾樱眉?來代替減1。相似地,與框77、78和/或80相關(guān)的討論是相關(guān)的并且可以是可適用的。此外,如果被考慮為三角形,則小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的連接大小估計(jì)包括三角形斜邊??蛇x地,通常在每個(gè)合并區(qū)域的每個(gè)迭代期間可以利用prev值來更新total,其通過如下方式A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)此外,小于等于關(guān)聯(lián)于合并區(qū)域的直方圖B的存儲(chǔ)段的數(shù)據(jù)值的關(guān)聯(lián)于合并區(qū)域的直方圖A的存儲(chǔ)段的數(shù)據(jù)值的數(shù)量的部分連接估計(jì)可以通過如下方式把關(guān)聯(lián)于所述合并區(qū)域的第一和第二直方圖的區(qū)域或存儲(chǔ)段的叉積進(jìn)行相乘來確定A<=B100%[CrossProduct(A,B)]-(A>B)特別地,CrossProduct(A,B)=f(A<B)+f(A=B)+f(A>B)可以通過對(duì)用于合并區(qū)域的三個(gè)部分連接估計(jì)的相加來確定所述叉積,所述部分連接估計(jì)主要是小于、等于以及大于關(guān)聯(lián)于合并區(qū)域的直方圖B的存儲(chǔ)段的數(shù)據(jù)值的關(guān)聯(lián)于合并區(qū)域的直方圖A的存儲(chǔ)段的數(shù)據(jù)值的數(shù)量的部分連接估計(jì)。本領(lǐng)域普通技術(shù)人員可以理解,可以利用多于一個(gè)的total變量,如,一個(gè)total變量用于(A<B)、一個(gè)total變量用于(A=B)、和/或一個(gè)total變量用于(A>B)。此外,本領(lǐng)域普通技術(shù)人員可以理解,可以根據(jù)框80中的公式,通過聯(lián)合單獨(dú)的total(即已調(diào)整的total或未調(diào)整的total)將該公式用于生成所查找的連接大小估計(jì)。相似地,小于和/或等于關(guān)聯(lián)于合并區(qū)域的直方圖B的存儲(chǔ)段的數(shù)據(jù)值的關(guān)聯(lián)于合并區(qū)域的直方圖A的存儲(chǔ)段的數(shù)據(jù)值的數(shù)量的部分連接估計(jì)可以通過如下確定A<=B(A<B)+(A=B)這樣,對(duì)于每個(gè)合并區(qū)域,小于關(guān)聯(lián)于合并區(qū)域的直方圖B的存儲(chǔ)段的數(shù)據(jù)值的關(guān)聯(lián)于合并區(qū)域的直方圖A的存儲(chǔ)段的數(shù)據(jù)值的部分連接估計(jì),以及等于關(guān)聯(lián)于合并區(qū)域的直方圖B的存儲(chǔ)段的數(shù)據(jù)值的關(guān)聯(lián)于合并區(qū)域的直方圖A的存儲(chǔ)段的數(shù)據(jù)值的部分連接估計(jì)可以被相加。本領(lǐng)域普通技術(shù)人員可以理解,可以利用多于一個(gè)的total變量,如,一個(gè)total變量用于(A<B)和/或一個(gè)total變量用于(A=B)。此外,本領(lǐng)域普通技術(shù)人員可以理解,通過聯(lián)合部分連接估計(jì)的單獨(dú)total,該公式可以用于生成所查找的連接大小估計(jì),所述單獨(dú)total如,在框80中根據(jù)公式A<=B(A<B)+(A=B)和/或A<=B100%[CrossProduct(A,B)]-(A>B)的用于A<B的已調(diào)整total或用于A=B的未調(diào)整total。返回到框78,如果所查找的連接大小估計(jì)是大于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計(jì),則可以通過替換小于公式的變量而在框78中為框77的合并區(qū)域生成部分連接估計(jì),所述小于公式包括與框80相關(guān)的所討論公式的第二部分。這樣,與框77、78和/或80相關(guān)的前面的討論可以是部分或整體地相關(guān)的并且是可適用的。特別地,所述部分連接估計(jì)可以通過如下確定A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)并且利用如下方式把為每個(gè)合并區(qū)域生成的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)可選地,所述公式通??梢员磉_(dá)為A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)返回到框78,如果所述查找的連接大小估計(jì)是大于或等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計(jì),則通過用三種技術(shù)來替換所述變量以估計(jì)小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小,而可以在框78中為框77的合并區(qū)域生成部分連接估計(jì)。相似地,與上述小于等于公式相關(guān)的討論也是相關(guān)的,此外,與框77、78和/或80相關(guān)的前面的討論可以是部分或整體地相關(guān)的并且是可適用的。特別地,可以通過如下方式確定部分連接估計(jì)A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)+1)并且利用如下方式將所述為每個(gè)合并區(qū)域生成的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)可選地,所述公式通??梢员磉_(dá)為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)可以用于為每個(gè)合并區(qū)域生成兩個(gè)部分連接估計(jì)。本領(lǐng)域普通技術(shù)人員可以理解對(duì)這些公式進(jìn)行加和減以及替換變量的能力,并且不引入錯(cuò)誤。例如,如果已經(jīng)存在對(duì)于A<B的連接大小估計(jì)和對(duì)于A=B的連接大小結(jié)果,但是通常聯(lián)合前面計(jì)算出的連接大小估計(jì)來為A>B生成連接大小估計(jì)是不合適的,因?yàn)樗鼘?dǎo)致負(fù)值或接近0的值。然而,在此處描述的實(shí)施例中,其中的計(jì)算是健壯的,所述對(duì)A>B的連接大小估計(jì)可以根據(jù)與本發(fā)明一致的|crossproduct|-|A<B|-|A=B|來可靠地計(jì)算得到。此外,在沒有accum變量時(shí),f(A<B)=f(B<A)的特性也可以用于合并區(qū)域。此外,本領(lǐng)域普通技術(shù)人員可以理解,可以對(duì)附圖3中的例程60和/或所述公式進(jìn)行變化。下面的例子例示了所示實(shí)施例的優(yōu)點(diǎn)。概述地,在第一例子中,在表III中顯示了TableA和TableB的多個(gè)連接大小估計(jì)和合并區(qū)域、部分連接估計(jì)、可以在例程60的迭代期間確定的accum和prev值。特別地,表I中的“TableA的數(shù)據(jù)”列包含了TableA的實(shí)際數(shù)據(jù)值,而表I的剩余列描述了TableA的直方圖。“下限”和“上限”列描述了TableA的直方圖的存儲(chǔ)段(即,表I中的每行通常表示一個(gè)存儲(chǔ)段)的界限,以及“計(jì)數(shù)”列例示了每個(gè)存儲(chǔ)段中的單元的數(shù)量。第一下限、所有上限和計(jì)數(shù)的值可以被存儲(chǔ),但是不必與本發(fā)明一致。為了簡(jiǎn)單起見,所述可以被存儲(chǔ)的值通過下面的標(biāo)記^來指出。相似地,表II例示了TableB的數(shù)據(jù)值并描述了TableB的直方圖。表I表II接著,表III詳細(xì)描述了所包含的用于指出連接大小估計(jì)的中間數(shù)據(jù)?!昂喜^(qū)域”列指定從直方圖A和/或直方圖B的存儲(chǔ)段生成的不同合并區(qū)域,以及它們的上界、下界,如,表III中第一合并區(qū)域的范圍是(-1,0],其中-1是獨(dú)占的下界而0是包含的上界。特別地,表III中“合并區(qū)域”的范圍基于TableA的直方圖的存儲(chǔ)段的界限(即,0,3,8,12),并且基于TableB的直方圖的存儲(chǔ)段的界限(即,-1,7,32)。|A|和|B|列各自例示了關(guān)聯(lián)于合并區(qū)域的直方圖A和B的存儲(chǔ)段的密度(如,關(guān)聯(lián)于合并區(qū)域的TableA的存儲(chǔ)段的計(jì)數(shù)除以存儲(chǔ)段的寬度)??梢詾槊總€(gè)合并區(qū)域計(jì)算Accum或Accumulator以及Prev或Previous值,但是所述值可能不被用于等式的連接大小估計(jì)中,相反,accum和prev值可以用于所示的兩個(gè)不等式公式中(即,小于和小于等于)。如前面描述的,Accum是關(guān)于有多少TableA的值小于合并區(qū)域下限的估計(jì),而Prev是在當(dāng)前合并區(qū)域中TableB的值與來自Accum的TableA的值之間的被估計(jì)的叉積。<、=以及<=列是三角形計(jì)算。此外,<、=以及<=列的每一行例示了部分連接估計(jì)。此外,可以通過關(guān)聯(lián)于所述連接大小估計(jì)的total變量來把每個(gè)部分連接估計(jì)聯(lián)合起來,如,第一total變量用于對(duì)<的連接大小估計(jì),第二total變量用于對(duì)=的連接大小估計(jì),以及第三total變量用于對(duì)<=的連接大小估計(jì)。此外,prev值可以與上面所描述的任意不等式的total變量聯(lián)合起來。表IIITableA和TableB之間的連接的連接大小估計(jì)參考表III,在表III的“合并區(qū)域”列中描述的合并區(qū)域可以利用前面提及的用于生成合并區(qū)域的技術(shù)來生成。例如,首先,A.upper[-1]可以指向直方圖A的第一存儲(chǔ)段的下限,主要是值0,而B.upper[-1]可以指向直方圖B的第一存儲(chǔ)段的下限,主要是值-1。在比較0和-1時(shí)所述最下限值是-1。這樣,數(shù)組B.upper[j]中的變量j可以被加1到值0,并且所述最下限值-1可以成為第一合并區(qū)域的下界。由于合并區(qū)域沒有完成,因此部分連接估計(jì)的計(jì)算可以延遲到第二循環(huán)迭代。在第二迭代期間,可以比較由A.upper[-1]和B.upper表示的界限值。A.upper[-1]值較小;這樣在第二迭代期間最下限值是0。數(shù)組A.upper[i]的變量i可以被加l,并且最下限值0可以成為第一合并區(qū)域的上界值。接著,所述公式可以用于生成部分連接估計(jì)(或如表III中所示的多個(gè)部分連接估計(jì)),下面將進(jìn)行更詳細(xì)地描述,并且如果沒有對(duì)直方圖A和B的存儲(chǔ)段的所有界限進(jìn)行處理,則可以進(jìn)行另一迭代循環(huán),所述處理通常通過分別將變量i和j與直方圖A和B的長(zhǎng)度進(jìn)行比較而標(biāo)識(shí)出來。這樣,在第三迭代期間,前一合并區(qū)域(即(-1,0])的上界值可以是第三迭代的第二合并區(qū)域的下界值,并且第三迭代的第二合并區(qū)域的上界值可以是下一個(gè)最下限值(即3),其通過比較A.upper和B.upper來確定。此外,可以遞增變量i并且利用所述公式為合并區(qū)域(0,3]計(jì)算部分連接估計(jì)等等。這樣,例程60中所概括的技術(shù)可以被實(shí)現(xiàn)并可產(chǎn)生如表III所例示的值?,F(xiàn)在,將更詳細(xì)地描述某些中間值和部分連接估計(jì);然而,由于表III中第一行和第二行中的多個(gè)0值不具有特定的說明性,本討論將從表III的第三行開始。這樣,從第三行開始,可以計(jì)算|A|或關(guān)聯(lián)于合并區(qū)域(3,7]的TableA的直方圖的存儲(chǔ)段的密度。特別地,TableA的直方圖中的存儲(chǔ)段3到8是關(guān)聯(lián)于合并區(qū)域的存儲(chǔ)段,因?yàn)樗龊喜^(qū)域與所述存儲(chǔ)段重疊(即,值3重疊)。特別地,存儲(chǔ)段的計(jì)數(shù)(即,4)可以除以存儲(chǔ)段上限和下限之間的差值(即,8-3=5),結(jié)果密度為.8(即,4/8-3=4/5=.8)。接著,為計(jì)算|B|,著眼于關(guān)聯(lián)于合并區(qū)域的TableB的直方圖中的存儲(chǔ)段的計(jì)數(shù)。合并區(qū)域(3,7]與具有界限一1和7的直方圖B的存儲(chǔ)段重疊。這樣,相關(guān)聯(lián)存儲(chǔ)段具有界限-1和7并且所述相關(guān)聯(lián)存儲(chǔ)段的計(jì)數(shù)(即,4)除以所述相關(guān)聯(lián)存儲(chǔ)段的上限和下限之間的差(即,7--1=8),結(jié)果是在|B|列的第三行所例示的值.5(即,4/7--1=4/8=.5)。在“寬度”列中的值4例示了合并區(qū)域的上界和下界之間的差。換句話說,通常值4可以滿足合并區(qū)域(3,7],主要地,值3、4、5和6可以滿足,但是值7不能滿足。在3和7之間可以存在無限個(gè)浮點(diǎn)值,但是為了簡(jiǎn)單,使用了整數(shù)。接著,轉(zhuǎn)到Accum列,可以通過把在此之前的行中的|A|值(即,1)乘以在此之前的行中的合并區(qū)域的寬度(即,3),并將所述乘積加到在此之前的行中的Aceum值(即,0)上來確定Accum值,結(jié)果得到小于當(dāng)前合并區(qū)域的最下限(即,3)的TableA的數(shù)據(jù)值的數(shù)量的估計(jì)。這樣,估計(jì)得到有3個(gè)TableA的數(shù)據(jù)值(即,3*1+0=3)小于值3。Prev指示當(dāng)前合并區(qū)域的TableB的數(shù)據(jù)值與來自Accum的TableA的數(shù)據(jù)值數(shù)量的被估計(jì)的叉積,并且可以通過把當(dāng)前Accum值(即,3)乘以合并區(qū)域(3,7]的當(dāng)前寬度(即,4)再乘以|B|(即,.5)來計(jì)算,得到被估計(jì)的叉積6。接著,剛描述的計(jì)算值可以插入前面提到的公式以估計(jì)部分連接估計(jì)?;氐降谌?,|A|和|B|的值以及所述寬度可以相乘在一起以估計(jì)在值3到7的范圍中等于TableB中的數(shù)據(jù)值的TableA中的數(shù)據(jù)值的數(shù)量。這樣,.8*.5*4為該合并區(qū)域產(chǎn)生估計(jì)1.6。為了估計(jì)總體上有多少個(gè)TableA的數(shù)據(jù)值等于TableB的數(shù)據(jù)值,在每個(gè)循環(huán)迭代期間,為每個(gè)合并區(qū)域生成的=列下的所有部分連接估計(jì)可以被加到所述total變量(未示出)上。這樣,得出的連接大小估計(jì)是在標(biāo)為total的行中例示的3.708。此外,由于這不是不等式,所以框80中的total值表示所述連接大小估計(jì)并且通常不需要調(diào)整。接著,為了得到對(duì)<和<=列的部分連接估計(jì),上面所描述的值可以插入<和<=公式。首先,假定所述公式被分為兩個(gè)部分。考慮第一部分,返回到第三行,考慮小于合并區(qū)域(3,7]的TableB的數(shù)據(jù)值的合并區(qū)域(3,7]中的TableA的數(shù)據(jù)值,0.5乘以|A|和|B|的值、合并區(qū)域的寬度、以及合并區(qū)域的寬度減1(即,1/2*.8*.5*4*3=2.4),結(jié)果得到部分連接估計(jì)2.4。相似地,返回到第三行,考慮小于等于合并區(qū)域(3,7]的TableB的數(shù)據(jù)值的合并區(qū)域(3,7]中的TableA的數(shù)據(jù)值,0.5乘以|A|和|B|的值、合并區(qū)域的寬度、以及合并區(qū)域的寬度加1(即,1/2*.8*.5*4*5=4),結(jié)果得到部分連接估計(jì)4。此外,前面計(jì)算得到的估計(jì)了合并區(qū)域(3,7]中的數(shù)據(jù)值的部分連接估計(jì)的<的估計(jì)(即,2.4)和=的估計(jì)(1.6)可以相加以得到估計(jì)4。同樣,把生成的值插入100%[CrossProduct(A,B)]-(A>B)將相似地得到估計(jì)4。如表III的最后一行“連接大小估計(jì)”所示,實(shí)現(xiàn)了每個(gè)<和<=公式的第二部分。特別地,關(guān)注表III的最后的連接大小估計(jì),total值表示來自所述公式第一部分的部分連接估計(jì)的和,而來自prev值列的所有的prev值(即,prev值的總數(shù)43.472)都分別被加到A<B和A<=B的部分連接估計(jì)的total(4.62和8.328)上。這樣,小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計(jì)是48.092,而小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計(jì)是51.8??蛇x地,第三行所示的為第三合并區(qū)域生成的prev值(即6)可以加到每個(gè)不等式的部分連接估計(jì)的累計(jì)上,即,0+1.5+2.4+6=8.4以及0+3+4+6=10。相似地,為第四合并區(qū)域生成的下一prev值(即0.992)和下一相應(yīng)的部分連接估計(jì)可以加到每個(gè)累計(jì),即,8.4+0+0.992=9.392以及10+0.128+0.992=11.12,等等。通常,這應(yīng)該產(chǎn)生相同的連接大小估計(jì),就好像已經(jīng)應(yīng)用了兩部分的公式一樣。本領(lǐng)域普通技術(shù)人員可以理解,雖然來自小于、等于和/或小于等于的TableA的數(shù)據(jù)值的實(shí)際數(shù)量在數(shù)據(jù)庫查行執(zhí)行之前可能都是未知的,這就是通常為什么在執(zhí)行數(shù)據(jù)庫查詢之前就生成連接大小估計(jì)的原因。然而,分別關(guān)注匹配標(biāo)準(zhǔn)的值的實(shí)際數(shù)量(即,41、3和44),本領(lǐng)域普通技術(shù)人員可以理解,在表III中所指示的連接大小估計(jì)48.092、3.708和51.8可以是有用的連接大小估計(jì)。此外,值得注意的是,A<B和A=B的連接估計(jì)(以及實(shí)際值)合計(jì)達(dá)A<=B,即,48.092+3.708=51.8。接著,參考第二個(gè)例子,和上面第一個(gè)例子一樣,在表V中顯示TableA和TableC的多個(gè)部分連接估計(jì)。首先,表I(上面)和表IV每個(gè)都分別顯示了TableA和TableC中的實(shí)際數(shù)據(jù),并且分別描述了每個(gè)表的直方圖。和第一個(gè)例子中一樣,具有符號(hào)^的值(特別是第一下限、上限、以及每個(gè)直方圖存儲(chǔ)段的計(jì)數(shù))可以被存儲(chǔ)。表IV接著,在表I和表IV中指示的下限和上限可以用于生成如下面表V中“合并區(qū)域”列所指示的多個(gè)合并區(qū)域。相同的公式和相應(yīng)的計(jì)算可以被實(shí)現(xiàn)用于得到如表V中所指示的每個(gè)合并區(qū)域的部分連接估計(jì)以及最后的連接大小估計(jì)。特別地,小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計(jì)的總體連接大小是32,等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計(jì)的總體連接大小是6.4,以及小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計(jì)的總體連接大小是38.4。表VTableA和TableC之間連接的連接大小估計(jì)此外,通過調(diào)換變量(即,A和C)順序,并為A>C和A>=C執(zhí)行計(jì)算,可以分別為A>C和A>=C生成最后的連接大小估計(jì)41.6和48。此外,本領(lǐng)域普通技術(shù)人員可以理解,A<C和A>=C的估計(jì)總數(shù)是80,并且因此A<=C和A>C的估計(jì)總數(shù)也一樣。此外,由于80是所述連接的叉積的大小(TableA中的數(shù)據(jù)值10乘以TableB中的數(shù)據(jù)值8得到80,即80=>80),這通常表明了所述公式是一致的??梢詫?duì)所示的實(shí)施例進(jìn)行多種修改而不脫離離本發(fā)明的精神和范圍。因此,本發(fā)明在于權(quán)利要求。權(quán)利要求1.一種用于估計(jì)第一和第二表的連接大小的方法,所述方法包括(a)從分別關(guān)聯(lián)于所述第一和第二表的第一和第二直方圖中確定多個(gè)合并區(qū)域,其中每個(gè)直方圖包括多個(gè)區(qū)域,并且其中每個(gè)合并區(qū)域與來自所述第一或第二直方圖中的至少一個(gè)的區(qū)域重疊;(b)對(duì)于每個(gè)合并區(qū)域,為這樣的合并區(qū)域計(jì)算部分連接估計(jì),其中計(jì)算所述部分連接估計(jì)包括將關(guān)聯(lián)于所述合并區(qū)域的第一和第二直方圖的任意區(qū)域的密度按照關(guān)聯(lián)于所述合并區(qū)域的寬度來按比例縮放;以及(c)聯(lián)合所述部分連接估計(jì)。2.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A=B,所述計(jì)算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,而width(currM)是所述合并區(qū)域的寬度。3.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<B,所述計(jì)算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計(jì)。4.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A≤=B,所述計(jì)算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計(jì)。5.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A≤=B,所述計(jì)算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分連接估計(jì)而(A=B)是第二部分連接估計(jì)。6.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<=B,所述計(jì)算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三個(gè)部分連接估計(jì)的相加(A<B)、(A=B)和(A>B)。7.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>B,所述計(jì)算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計(jì)。8.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計(jì)。9.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分連接估計(jì)而(B=A)是第二部分連接估計(jì)。10.根據(jù)權(quán)利要求1所述的方法,其中為合并區(qū)域計(jì)算部分連接估計(jì)包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三個(gè)部分連接估計(jì)的相加(B<A)、(B=A)和(B>A)。11.根據(jù)權(quán)利要求1所述的方法,其中所述部分連接估計(jì)引入模糊邏輯規(guī)則。12.根據(jù)權(quán)利要求1所述的方法,其中所述合并區(qū)域與來自所述第一或第二直方圖中的至少一個(gè)的區(qū)域重疊包括利用所述第一或第二直方圖的上限或下限中的至少一個(gè)。13.一種裝置,包括至少一個(gè)處理器;存儲(chǔ)器;以及駐留在所述存儲(chǔ)器中并配置由所述至少一個(gè)處理器執(zhí)行來估計(jì)第一和第二表的連接大小的程序代碼,所述估計(jì)通過如下方式從分別關(guān)聯(lián)于所述第一和第二表的第一和第二直方圖中確定多個(gè)合并區(qū)域,其中每個(gè)直方圖包括多個(gè)區(qū)域,并且其中每個(gè)合并區(qū)域與來自所述第一或第二直方圖中的至少一個(gè)的區(qū)域重疊,對(duì)于每個(gè)合并區(qū)域,為這樣的合并區(qū)域計(jì)算部分連接估計(jì),其中計(jì)算所述部分連接估計(jì)包括將關(guān)聯(lián)于所述合并區(qū)域的第一和第二直方圖的任意區(qū)域的密度按照關(guān)聯(lián)于所述合并區(qū)域的寬度來按比例縮放,以及聯(lián)合所述部分連接估計(jì)。14.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于所述估計(jì)第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A=B,所述計(jì)算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,而width(currM)是所述合并區(qū)域的寬度。15.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<B,所述計(jì)算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計(jì)。16.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<=B,所述計(jì)算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中數(shù)據(jù)值的數(shù)量的估計(jì)。17.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<=B,所述計(jì)算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分連接估計(jì)而(A=B)是第二部分連接估計(jì)。18.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A<=B,所述計(jì)算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三個(gè)部分連接估計(jì)的相加(A<B)、(A=B)和(A>B)。19.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>B,所述計(jì)算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計(jì)。20.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關(guān)聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關(guān)聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計(jì)。21.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表的連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分連接估計(jì)而(B=A)是第二部分連接估計(jì)。22.根據(jù)權(quán)利要求13所述的裝置,配置為合并區(qū)域計(jì)算部分連接估計(jì)的所述程序代碼包括計(jì)算用于估計(jì)所述第一和第二表連接大小的部分連接估計(jì),所述第一和第二表滿足條件A>=B,所述計(jì)算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三個(gè)部分連接估計(jì)的相加(B<A)、(B=A)和(B>A)。23.根據(jù)權(quán)利要求13所述的裝置,其中所述程序代碼配置在所述部分連接估計(jì)中引入模糊邏輯規(guī)則。24.根據(jù)權(quán)利要求13所述的裝置,其中所述合并區(qū)域與來自所述第一或第二直方圖中的至少一個(gè)的區(qū)域重疊,所述程序代碼進(jìn)一步配置為利用所述第一或第二直方圖的上限或下限中的至少一個(gè)。全文摘要一種用于通過生成部分連接估計(jì)并聯(lián)合所述部分連接估計(jì)來估計(jì)連接大小的程序產(chǎn)品、裝置和方法。特別地,提供了健壯的公式,其可以得到更加一致的估計(jì)和更少的不準(zhǔn)確性。傳統(tǒng)的連接大小估計(jì)技術(shù)通常存在不一致性和不準(zhǔn)確性,然而,與本發(fā)明一致,可以生成一致的連接大小估計(jì),其在優(yōu)化期間導(dǎo)致改進(jìn)的訪問計(jì)劃選擇。文檔編號(hào)G06F17/30GK1979486SQ20061014952公開日2007年6月13日申請(qǐng)日期2006年11月14日優(yōu)先權(quán)日2005年12月8日發(fā)明者J·普日瓦拉申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司