專利名稱:數(shù)據(jù)庫查詢的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)庫管理系統(tǒng),更具體地,涉及一種數(shù)據(jù)庫查詢的方法和系統(tǒng)。
背景技術(shù):
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。關(guān)系數(shù)據(jù)庫是目前常用的數(shù)據(jù)庫類型,對關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),目前使用結(jié)構(gòu)化查詢語言(SQL)進(jìn)行查詢。SQL語言的功能包括查詢、操縱、定義和控制,是一個(gè)綜合的、通用的關(guān)系數(shù)據(jù)庫語言,同時(shí)又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎么做。SQL集成實(shí)現(xiàn)了數(shù)據(jù)庫生命周期中的全部操作。SQL提供了與關(guān)系數(shù)據(jù)庫進(jìn)行交互的方法,它可以與標(biāo)準(zhǔn)的編程語言一起工作。 數(shù)據(jù)庫管理系統(tǒng)(database management system)是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。現(xiàn)有的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)包括IBM的DB2、Oracle、Informix、Sybase、SQL Server 等。數(shù)據(jù)庫管理系統(tǒng)的查詢引擎(Query ExecutionRuntime)都支持SQL語言的查詢功能。用戶或者應(yīng)用程序可以使用SQL語言,通過數(shù)據(jù)庫管理系統(tǒng)的查詢引擎對其管理的數(shù)據(jù)庫進(jìn)行查詢。查詢的結(jié)果一般包含多個(gè)記錄,一般稱返回第一條滿足查詢條件數(shù)據(jù)的時(shí)間為查詢響應(yīng)時(shí)間(response time),而返回所有滿足查詢條件的數(shù)據(jù)結(jié)果集的時(shí)間稱為查詢總時(shí)間(total time)。目前的數(shù)據(jù)庫管理系統(tǒng)接收到查詢請求時(shí),會默認(rèn)盡可能使用最小查詢總時(shí)間運(yùn)行查詢,數(shù)據(jù)庫管理系統(tǒng)會產(chǎn)生一個(gè)查詢訪問計(jì)劃,該計(jì)劃能夠以最有效的方式返回給用戶或者發(fā)出查詢的應(yīng)用程序完整的查詢結(jié)果。有時(shí),發(fā)出查詢的應(yīng)用程序或用戶傾向于盡快得到開始的幾個(gè)查詢結(jié)果,而不關(guān)注完成整個(gè)查詢所經(jīng)過的時(shí)間,這種應(yīng)用可以使用語句“OPTIMIZED FOR FIRST N ROW”來通知數(shù)據(jù)庫管理系統(tǒng)的查詢引擎優(yōu)化器以最小查詢響應(yīng)時(shí)間而不是最小查詢總時(shí)間來執(zhí)行查詢。然而,許多應(yīng)用需要同時(shí)以最小查詢響應(yīng)時(shí)間和最小查詢總時(shí)間來執(zhí)行查詢。當(dāng)一個(gè)發(fā)出查詢的應(yīng)用發(fā)出查詢請求,它需要盡快從數(shù)據(jù)庫中得到響應(yīng),然后得到初始的幾個(gè)查詢結(jié)果,以便可以判斷是否進(jìn)行后續(xù)的查詢或者其它商業(yè)邏輯。當(dāng)前的數(shù)據(jù)庫管理系統(tǒng)只能或者提供以最小查詢響應(yīng)時(shí)間的查詢計(jì)劃,或者提供以最小查詢總時(shí)間的查詢計(jì)劃,這些查詢計(jì)劃都沒有辦法能同時(shí)減少查詢響應(yīng)時(shí)間和查詢總時(shí)間。
發(fā)明內(nèi)容
因此,需要一種新的數(shù)據(jù)庫查詢方法,該方法使得用戶或應(yīng)用程序在查詢數(shù)據(jù)庫時(shí),能夠同時(shí)以最小查詢響應(yīng)時(shí)間和最小查詢執(zhí)行時(shí)間來執(zhí)行該查詢,從而滿足用戶或應(yīng)用程序的數(shù)據(jù)庫查詢要求。根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫查詢的方法,包括響應(yīng)于查詢請求,獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;開始執(zhí)行以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;在以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃 執(zhí)行到指定點(diǎn)之前,輸出以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行得到的初始查詢結(jié)果;響應(yīng)于以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn),繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃以輸出剩余查詢結(jié)果。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種數(shù)據(jù)庫查詢的系統(tǒng),包括獲得裝置,被配置為響應(yīng)于查詢請求,獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;執(zhí)行裝置,被配置為執(zhí)行以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;控制裝置,被配置為檢測以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是否執(zhí)行到指定占.輸出裝置,被配置為輸出查詢結(jié)果;其中,在所述控制裝置檢測到以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn)之前,所述輸出裝置輸出以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行得到的初始查詢結(jié)果;響應(yīng)于所述控制裝置檢測到以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn),所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃以使所述輸出裝置輸出剩余查詢結(jié)果。
通過對附圖中本發(fā)明示例實(shí)施例方式的更詳細(xì)描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,相同的參考標(biāo)號通常代表本發(fā)明示例實(shí)施例方式中的相同部件。圖I示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖;圖2示出一個(gè)示例性的查詢請求及其對應(yīng)的兩張表;圖3示出了哈希連接的工作方式;圖4示出了本發(fā)明提出的新的數(shù)據(jù)庫查詢方法的方法步驟;以及圖5示出了本發(fā)明提出的數(shù)據(jù)庫查詢的系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式將參照附圖更加詳細(xì)地描述本發(fā)明的優(yōu)選實(shí)施方式,在附圖中顯示了本發(fā)明的優(yōu)選實(shí)施例。然而,本發(fā)明可以以各種形式實(shí)現(xiàn)而不應(yīng)該理解為被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達(dá)給本領(lǐng)域的技術(shù)人員。圖I示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖。如所示,計(jì)算機(jī)系統(tǒng)100可以包括CPU(中央處理單元)101、RAM(隨機(jī)存取存儲器)102、R0M(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPU 10URAM 102, ROM 103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖I所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。在數(shù)據(jù)庫的應(yīng)用中,數(shù)據(jù)一般存在于多個(gè)相關(guān)聯(lián)的表中,基本上沒有數(shù)據(jù)只存在于一張表的情況。小的應(yīng)用系統(tǒng)的數(shù)據(jù)集有十幾張表,大型系統(tǒng)數(shù)據(jù)集有上千張表。因此,用戶和數(shù)據(jù)庫應(yīng)用程序經(jīng)常要做的就是在多個(gè)表的大數(shù)據(jù)集中進(jìn)行數(shù)據(jù)查詢。也就是使用數(shù)據(jù)庫多表關(guān)聯(lián)查詢,多表關(guān)聯(lián)查詢一般使用表連接技術(shù),這種查詢最為耗時(shí)。因此,一般來說,只有這種多表關(guān)聯(lián)查詢才會有同時(shí)以最小查詢響應(yīng)時(shí)間和最小查詢總時(shí)間來執(zhí)行該查詢的必要性,單張表的查詢一般來說響應(yīng)是非??斓?,如果用戶或應(yīng)用程序有上述要求,使用最小查詢總時(shí)間來運(yùn)行查詢即可。
·
以查詢的連接操作是對數(shù)據(jù)庫中的兩個(gè)表進(jìn)行的操作為例,多表的關(guān)聯(lián)操作可以認(rèn)為是若干組兩張表關(guān)聯(lián)的組合,圖2示出一個(gè)示例性的查詢請求及其對應(yīng)的兩張表,以下的敘述中,以此為實(shí)例,講述本發(fā)明的方法及各種實(shí)現(xiàn)方式。查詢的連接操作也可以是對數(shù)據(jù)庫中的多個(gè)查詢中間結(jié)果集、或表與查詢中間結(jié)果集進(jìn)行的操作,因此,本領(lǐng)域技術(shù)人員可以知道,表Tl和表T2之一或全部也可以是查詢結(jié)果的中間集。圖2中,包含了兩張表,其共同的列為 Product_id,查詢語句為Select * from Tl, T2where Tl. Product_id =T2. Product_id0多表關(guān)聯(lián)查詢一般使用的表連接技術(shù)包括嵌套循環(huán)連接(nested loop join)、哈希連接(hash join)以及排序合并連接(merge join)等。嵌套循環(huán)連接的工作方式是這樣的首先選擇一張表作為連接的驅(qū)動(dòng)表,例如圖2的表Tl,然后提取驅(qū)動(dòng)表Tl中符合條件的記錄,與被驅(qū)動(dòng)表,例如圖2的表T2的連接列進(jìn)行關(guān)聯(lián)查詢,得到符合條件的記錄。在這個(gè)過程中,首先提取驅(qū)動(dòng)表Tl中符合條件的第一條記錄,再與被驅(qū)動(dòng)表T2的連接列進(jìn)行關(guān)聯(lián)查詢,得到相應(yīng)的記錄行。在關(guān)聯(lián)查詢的過程中,會持續(xù)提取驅(qū)動(dòng)表Tl中其它符合條件的記錄與被驅(qū)動(dòng)表T2關(guān)聯(lián)查詢,不需要等到全部流程結(jié)束再返回結(jié)果集,而是不斷地將查詢出來的結(jié)果集返回。在這種情況下,終端用戶將會快速地得到返回的首批記錄。因此嵌套循環(huán)連接返回前幾條記錄的速度是非??斓?。嵌套循環(huán)連接適用于查詢的選擇性強(qiáng)、約束性高并且僅返回小部分記錄的結(jié)果集。圖3示出了哈希連接的工作方式,根據(jù)圖3,哈希連接的工作方式分為兩個(gè)階段首先是構(gòu)建階段查詢引擎優(yōu)化器首先選擇一張表,例如圖2的表T2,運(yùn)用哈希函數(shù)對表T2的連接列(即表T2中的Productjd列),進(jìn)行計(jì)算產(chǎn)生一張哈希表;然后是探測階段查詢引擎優(yōu)化器對另外一張表(例如圖2的表Tl)的每條記錄的連接列(即表Tl中的ProdUCt_id列)運(yùn)用同樣的哈希函數(shù)計(jì)算得到哈希值并在生成的哈希表中查找是否存在匹配的哈希值。對于數(shù)據(jù)量比較大的表T2,哈希連接的構(gòu)建階段需要花費(fèi)比較長的時(shí)間進(jìn)行哈希表的初始化;而對于分布式數(shù)據(jù)庫環(huán)境下,若數(shù)據(jù)還需要從遠(yuǎn)端提取,該構(gòu)造時(shí)間還將進(jìn)一步延長。因此,哈希連接存在較長的查詢響應(yīng)時(shí)間。但是,一旦哈希表建立完畢,能夠快速獲得全部的查詢結(jié)果集,因此,哈希連接比較適用于要求查詢總時(shí)間小并且返回大數(shù)據(jù)量結(jié)果集的查詢。排序合并連接的方法比較簡單。排序合并連接的工作方式也分為兩個(gè)階段,類似于哈希連接首先是構(gòu)建階段查詢引擎優(yōu)化器對兩張表中大的表按照連接列進(jìn)行排序,即圖2的表T2按照PiOductjd列進(jìn)行排序,排序需要較長的時(shí)間;然后是運(yùn)行階段首先對兩張表中另外一張表,即圖2的表Tl,也按照Product id列進(jìn)行排序,由于該表較小,排序時(shí)間短,查詢引擎優(yōu)化器對兩張排序后的表直接進(jìn)行合并連接,提取符合條件的記錄,就可以得到查詢結(jié)果。一旦排序結(jié)束,能夠快速獲得全部查詢結(jié)果,因此,相比嵌套循環(huán)連接,排序合并連接比較適用于要求查詢總時(shí)間小并且返回大數(shù)據(jù)量結(jié)果的查詢?,F(xiàn)有技術(shù)中,對于大數(shù)據(jù)集的連接查詢,數(shù)據(jù)庫管理系統(tǒng)的查詢引擎優(yōu)化器通常為了得到更好的查詢總時(shí)間,通常會選擇哈希連接或者排序合并連接。在強(qiáng)制數(shù)據(jù)庫管理系統(tǒng)的查詢引擎優(yōu)化器得到更好查詢響應(yīng)時(shí)間時(shí),查詢引擎優(yōu)化器會選擇嵌套循環(huán)連接。 以下表I比較了這三種連接方式,由表I可見,不同的連接類型具有不同的優(yōu)勢,根據(jù)這樣的優(yōu)勢,可以將連接類型分為兩類,一類是查詢總時(shí)間最小的連接,一類是查詢響應(yīng)時(shí)間最小的連接。相應(yīng)地,查詢引擎優(yōu)化器可以輸出以查詢總時(shí)間最小的連接建立的查詢總時(shí)間最小的查詢計(jì)劃和以查詢響應(yīng)時(shí)間最小的連接建立的查詢總時(shí)間最小的查詢計(jì)劃。表I三種連接方式的比較
權(quán)利要求
1.一種數(shù)據(jù)庫查詢的方法,包括 響應(yīng)于查詢請求,獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃; 開始執(zhí)行以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃; 在以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn)之前,輸出以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行得到的初始查詢結(jié)果; 響應(yīng)于以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn),繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃以輸出剩余查詢結(jié)果。
2.根據(jù)權(quán)利要求I所述的方法,其中以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃是使用嵌套循環(huán)連接的查詢計(jì)劃,以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是使用哈希連接的查詢計(jì)劃,所述指定點(diǎn)是哈希連接的構(gòu)建階段結(jié)束的點(diǎn)。
3.根據(jù)權(quán)利要求2所述的方法,其中所述繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃包括 從使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表中的第一個(gè)未執(zhí)行嵌套循環(huán)連接查詢計(jì)劃的記錄開始,執(zhí)行使用哈希連接的查詢計(jì)劃的探測階段的操作。
4.根據(jù)權(quán)利要求I所述的方法,其中以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃是使用嵌套循環(huán)連接的查詢計(jì)劃,以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是使用排序合并連接的查詢計(jì)劃,所述指定點(diǎn)是排序合并連接的構(gòu)建階段結(jié)束的點(diǎn)。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述在排序合并連接的構(gòu)建階段中對使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表之外的另外一張表按照連接列進(jìn)行排序,得到另外一張表的排序表;并且其中所述繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃包括對使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表中的已經(jīng)執(zhí)行過嵌套循環(huán)連接查詢計(jì)劃的記錄,不再執(zhí)行使用排序合并連接的查詢計(jì)劃的執(zhí)行階段的操作。
6.根據(jù)權(quán)利要求5所述的方法,其中對使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表中的已經(jīng)執(zhí)行過嵌套循環(huán)連接查詢計(jì)劃的記錄,不再執(zhí)行使用排序合并連接的查詢計(jì)劃的執(zhí)行階段的操作包括 對所述驅(qū)動(dòng)表去除已經(jīng)執(zhí)行過嵌套循環(huán)連接查詢計(jì)劃的記錄后,按照連接列進(jìn)行排序,得到剩余驅(qū)動(dòng)表的排序表; 對剩余驅(qū)動(dòng)表的排序表和另外一張表的排序表進(jìn)行合并連接操作,得到所述剩余查詢結(jié)果。
7.根據(jù)權(quán)利要求2或4所述的方法,其中所述繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃,輸出剩余查詢結(jié)果包括 存儲所述初始查詢結(jié)果; 存儲以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃的全部查詢結(jié)果; 將全部查詢結(jié)果中去除初始查詢結(jié)果,得到剩余查詢結(jié)果。
8.根據(jù)權(quán)利要求I所述的方法,其中所述查詢請求是對數(shù)據(jù)庫中的以下至少一個(gè)進(jìn)行的 多個(gè)表;多個(gè)查詢中間結(jié)果集; 表與查詢中間結(jié)果集。
9.根據(jù)權(quán)利要求I所述的方法,其中在獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃之前還包括 利用數(shù)據(jù)庫查詢引擎優(yōu)化器的代價(jià)模型評估以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃使用哈希連接的查詢計(jì)劃以及使用排序合并連接的查詢計(jì)劃; 選擇上述二者中代價(jià)小的查詢計(jì)劃作為以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃。
10.一種數(shù)據(jù)庫查詢的系統(tǒng),包括 獲得裝置,被配置為響應(yīng)于查詢請求,獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃; 執(zhí)行裝置,被配置為執(zhí)行以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃; 控制裝置,被配置為檢測以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是否執(zhí)行到指定點(diǎn); 輸出裝置,被配置為輸出查詢結(jié)果; 其中,在所述控制裝置檢測到以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn)之前,所述輸出裝置輸出以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行得到的初始查詢結(jié)果;響應(yīng)于所述控制裝置檢測到以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn),所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃以使所述輸出裝置輸出剩余查詢結(jié)果。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃是使用嵌套循環(huán)連接的查詢計(jì)劃,以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是使用哈希連接的查詢計(jì)劃,所述指定點(diǎn)是哈希連接的構(gòu)建階段結(jié)束的點(diǎn)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃包括 執(zhí)行裝置從使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表中的第一個(gè)未執(zhí)行嵌套循環(huán)連接查詢計(jì)劃的記錄開始,執(zhí)行使用哈希連接的查詢計(jì)劃的探測階段的操作。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃是使用嵌套循環(huán)連接的查詢計(jì)劃,以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃是使用排序合并連接的查詢計(jì)劃,所述指定點(diǎn)是排序合并連接的構(gòu)建階段結(jié)束的點(diǎn)。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中在所述排序合并連接的構(gòu)建階段中對使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表之外的另外一張表按照連接列進(jìn)行排序,得到另外一張表的排序表;并且其中所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃包括 執(zhí)行裝置對使用嵌套循環(huán)連接的查詢計(jì)劃的驅(qū)動(dòng)表中的已經(jīng)執(zhí)行過嵌套循環(huán)連接查詢計(jì)劃的記錄,不再執(zhí)行使用排序合并連接的查詢計(jì)劃的執(zhí)行階段的操作。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述執(zhí)行裝置包括 去除裝置,被配置為對所述驅(qū)動(dòng)表去除已經(jīng)執(zhí)行過嵌套循環(huán)連接查詢計(jì)劃的記錄后,按照連接列進(jìn)行排序,得到剩余驅(qū)動(dòng)表的排序表; 合并連接裝置,被配置為對剩余驅(qū)動(dòng)表的排序表和另外一張表的排序表進(jìn)行合并連接操作,得到所述剩余查詢結(jié)果。
16.根據(jù)權(quán)利要求11或13所述的系統(tǒng),其中所述執(zhí)行裝置還包括初始查詢結(jié)果存儲裝置,被配置為存儲所述初始查詢結(jié)果; 全部查詢結(jié)果存儲裝置,被配置為存儲以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃的全部查詢結(jié)果; 剩余查詢結(jié)果獲得裝置,被配置為將全部查詢結(jié)果中去除初始查詢結(jié)果,得到剩余查詢結(jié)果。
17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述查詢請求是對數(shù)據(jù)庫中的以下至少一個(gè)進(jìn)行的 多個(gè)表; 多個(gè)查詢中間結(jié)果集; 表與查詢中間結(jié)果集。
18.根據(jù)權(quán)利要求10所述的系統(tǒng),其中還包括 評估裝置,被配置為利用數(shù)據(jù)庫查詢引擎優(yōu)化器的代價(jià)模型評估以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃使用哈希連接的查詢計(jì)劃以及使用排序合并連接的查詢計(jì)劃; 選擇裝置,被配置為選擇上述二者中代價(jià)小的查詢計(jì)劃作為以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫查詢的方法和系統(tǒng),該方法包括響應(yīng)于查詢請求,獲得該查詢請求的以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;開始執(zhí)行以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃以及以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃;在以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn)之前,輸出以最小查詢響應(yīng)時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行得到的初始查詢結(jié)果;響應(yīng)于以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃執(zhí)行到指定點(diǎn),繼續(xù)執(zhí)行以最小查詢總時(shí)間為目標(biāo)的查詢計(jì)劃以輸出剩余查詢結(jié)果。該查詢方法和系統(tǒng)能同時(shí)減少查詢響應(yīng)時(shí)間和查詢總時(shí)間。
文檔編號G06F17/30GK102968420SQ201110270208
公開日2013年3月13日 申請日期2011年8月31日 優(yōu)先權(quán)日2011年8月31日
發(fā)明者張廣舟, 雷尚順, 趙勝, 孫云峰, 陳奇 申請人:國際商業(yè)機(jī)器公司