亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法和設(shè)備的制作方法

文檔序號:6503524閱讀:275來源:國知局
關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法和設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種用于關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法和設(shè)備。所述方法包括:對于查詢語句中一預(yù)定層級中的至少兩個復(fù)雜謂詞中的每一個,基于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾性;以及基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序,以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。通過所述方法和設(shè)備,可以縮短數(shù)據(jù)查詢所需的響應(yīng)時間,提高查詢的執(zhí)行效率。
【專利說明】關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法和設(shè)備

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及關(guān)系型數(shù)據(jù)庫領(lǐng)域,更具體地,涉及一種關(guān)系型數(shù)據(jù)庫中的查詢語句 的優(yōu)化方法和設(shè)備。

【背景技術(shù)】
[0002] 現(xiàn)今,主流的關(guān)系型數(shù)據(jù)庫系統(tǒng)提供了關(guān)系數(shù)據(jù)服務(wù)(RDS)。RDS處理過程對數(shù) 據(jù)庫查詢語句(以下簡稱查詢語句)進(jìn)行解析(parse),并根據(jù)解析進(jìn)行查詢語句語義變換 (QST)。在此過程中,還對查詢語句進(jìn)行重寫(rewrite)。然后,RDS處理過程根據(jù)QST處 理的查詢進(jìn)行訪問路徑選擇(即,APS估算),并生成訪問路徑描述語言(Access Specific Language),以供執(zhí)行結(jié)構(gòu)產(chǎn)生器來生成執(zhí)行結(jié)構(gòu)。數(shù)據(jù)庫引擎(或其執(zhí)行模塊)將根據(jù)該執(zhí) 行結(jié)構(gòu)執(zhí)行該查詢以獲得查詢結(jié)果。
[0003] 如何選取最優(yōu)的訪問路徑來執(zhí)行查詢一直是數(shù)據(jù)庫查詢優(yōu)化領(lǐng)域的一個重要研 究課題。查詢重寫是選取最優(yōu)的訪問路徑的重要組成部分。在查詢重寫期間,RDS處理將 查詢語句轉(zhuǎn)換為執(zhí)行起來更有效的形式?,F(xiàn)有技術(shù)中提供了一些針對簡單謂詞查詢的查詢 重寫技術(shù),例如謂詞再分布技術(shù)、謂詞順序重新排序等。在本領(lǐng)域中,通常將順序包含自變 量、操作關(guān)系運(yùn)算符或邏輯運(yùn)算符、連接常量且所述自變量不包含函數(shù)、表達(dá)式、或分句的 謂詞稱作簡單謂詞;而將其他類謂詞稱作復(fù)雜謂詞,例如,復(fù)雜謂詞可以包含變量、函數(shù)、表 達(dá)式、分句等等。在數(shù)據(jù)庫語言中,所述關(guān)系運(yùn)算符或邏輯運(yùn)算符可以包括" = """NOT"、" IN"、"LIKE"、"BETWEEN" 等。
[0004] 在上述針對簡單謂詞查詢的謂詞順序重新排序技術(shù)中,通?;跀?shù)據(jù)庫統(tǒng)計信息 估算簡單謂詞的過濾因子,并將過濾性強(qiáng)的謂詞盡早地應(yīng)用于查詢,以便提高查詢效率。然 而,數(shù)據(jù)庫統(tǒng)計信息往往是粗略概要的、并且不能實時準(zhǔn)確地反映數(shù)據(jù)信息,因此基于此計 算出的簡單謂詞的過濾因子通常不夠準(zhǔn)確,導(dǎo)致由此確定的謂詞排列順序也不是最優(yōu)的。 另一方面,由于復(fù)雜謂詞并非由數(shù)據(jù)管理器(DM)來處理,而是在關(guān)系數(shù)據(jù)服務(wù)器上執(zhí)行,因 此無法根據(jù)數(shù)據(jù)庫統(tǒng)計信息預(yù)先估算復(fù)雜謂詞的過濾因子,從而上述謂詞順序重新排序技 術(shù)不適用于復(fù)雜謂詞。


【發(fā)明內(nèi)容】

[0005] 鑒于以上問題而提出了本發(fā)明。本發(fā)明的目的是提供一種用于關(guān)系型數(shù)據(jù)庫中的 查詢語句的優(yōu)化方法和設(shè)備,其能夠縮短數(shù)據(jù)查詢所需的響應(yīng)時間,提高查詢的執(zhí)行效率, 而且所述優(yōu)化方法和設(shè)備可以應(yīng)用于復(fù)雜謂詞,從而擴(kuò)大了查詢重寫技術(shù)的適用范圍。
[0006] 根據(jù)本發(fā)明的一個方面,提供了一種用于關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方 法,包括:對于查詢語句中一預(yù)定層級中的至少兩個復(fù)雜謂詞中的每一個,基于由僅使用該 復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾性;以及基于所述過濾 性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序,以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱 的復(fù)雜謂詞之前。
[0007] 根據(jù)本發(fā)明的另一個方面,提供了一種用于關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化設(shè) 備,包括:過濾性確定裝置,被配置為對于查詢語句中一預(yù)定層級的至少兩個復(fù)雜謂詞中的 每一個,基于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過 濾性;以及重新排序裝置,被配置為基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新 排序,以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。
[0008] 根據(jù)本發(fā)明上述方面的方法和設(shè)備可以通過使用單個復(fù)雜謂詞對要實際查詢的 數(shù)據(jù)記錄進(jìn)行查詢,來精確地確定各個復(fù)雜謂詞的過濾性。通過基于該精確地確定的過濾 性對謂詞進(jìn)行重新排序,可以獲得高效的執(zhí)行效率。另外,根據(jù)本發(fā)明上述方面的優(yōu)化方法 和設(shè)備可以應(yīng)用于同時包含簡單謂詞和復(fù)雜謂詞的查詢,因此具有較大的適用范圍。

【專利附圖】

【附圖說明】
[0009] 通過結(jié)合附圖對本公開示例性實施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其 它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號 通常代表相同部件。
[0010] 圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機(jī)系統(tǒng)/服務(wù)器12的框 圖。
[0011] 圖2示出了根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法的流程 圖。
[0012] 圖3示出了根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的復(fù)雜謂詞的重新排序過程的 流程圖。
[0013] 圖4示出了應(yīng)用根據(jù)本發(fā)明第一實施例的優(yōu)化方法對復(fù)雜謂詞進(jìn)行重新排序過 程的示例情形。
[0014] 圖5是示出了應(yīng)用根據(jù)本發(fā)明第二實施例的優(yōu)化方法對復(fù)雜謂詞進(jìn)行重新排序 過程的示例情形。
[0015] 圖6例示了根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化設(shè)備的結(jié)構(gòu) 的框圖。
[0016] 圖7例示了根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化設(shè)備中的過 濾性確定裝置的結(jié)構(gòu)框圖。

【具體實施方式】
[0017] 下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開 的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方 式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的 范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0018] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。 因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括 固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為"電路"、"模 塊"或"系統(tǒng)"。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì) 中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介質(zhì)中包含計算機(jī)可讀的程序代碼。
[0019] 可以采用一個或多個計算機(jī)可讀的介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計 算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是一但不限 于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、設(shè)備或器件,或者任意以上的組合。計算 機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便 攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲 器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、 或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程 序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、設(shè)備或者器件使用或者與其結(jié)合使用。
[0020] 計算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號, 其中承載了計算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括--但 不限于--電磁信號、光信號或上述的任意合適的組合。計算機(jī)可讀的信號介質(zhì)還可以是 計算機(jī)可讀存儲介質(zhì)以外的任何計算機(jī)可讀介質(zhì),該計算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者 傳輸用于由指令執(zhí)行系統(tǒng)、設(shè)備或者器件使用或者與其結(jié)合使用的程序。
[0021] 計算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0022] 可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機(jī) 程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++, 還包括常規(guī)的過程式程序設(shè)計語言一諸如" C"語言或類似的程序設(shè)計語言。程序代碼可以 完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部 分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在 涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)--包括局域網(wǎng)(LAN)或 廣域網(wǎng)(WAN)-連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提 供商來通過因特網(wǎng)連接)。
[0023] 下面將參照本發(fā)明實施例的方法、設(shè)備(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或 框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方 框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算機(jī)、專 用計算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器,從而生產(chǎn)出一種機(jī)器,這些計算機(jī)程序指 令通過計算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中 規(guī)定的功能/操作的設(shè)備。
[0024] 也可以把這些計算機(jī)程序指令存儲在能使得計算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備 以特定方式工作的計算機(jī)可讀介質(zhì)中,這樣,存儲在計算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一 個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令設(shè)備(instruction means)的制造品(manufacture)。
[0025] 也可以把計算機(jī)程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理設(shè)備、或其它設(shè)備 上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理設(shè)備或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計 算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)或其它可編程設(shè)備上執(zhí)行的指令能夠提供實現(xiàn)流程圖 和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0026] 圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機(jī)系統(tǒng)/服務(wù)器12的框 圖。圖1顯示的計算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個示例,不應(yīng)對本發(fā)明實施例的功能和使 用范圍帶來任何限制。
[0027] 如圖1所示,計算機(jī)系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機(jī)系統(tǒng) /服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器 28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0028] 總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器, 外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉 例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC) 總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0029] 計算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是 任何能夠被計算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動 的和不可移動的介質(zhì)。
[0030] 系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲器(RAM)30和/或高速緩存存儲器32。計算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其 它可移動/不可移動的、易失性/非易失性計算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34 可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤驅(qū)動器")。盡管圖 1中未示出,可以提供用于對可移動非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動器,以及對 可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些 情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以 包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被 配置以執(zhí)行本發(fā)明各實施例的功能。
[0031] 具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器 28中,這樣的程序模塊42包括--但不限于--操作系統(tǒng)、一個或者多個應(yīng)用程序、其它 程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程 序模塊42通常執(zhí)行本發(fā)明所描述的實施例中的功能和/或方法。
[0032] 計算機(jī)系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14 (例如鍵盤、指向設(shè)備、 顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè) 備通信,和/或與使得該計算機(jī)系統(tǒng)/服務(wù)器12能與一個或多個其它計算設(shè)備進(jìn)行通信的 任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22 進(jìn)行。并且,計算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如 局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20 通過總線18與計算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以 結(jié)合計算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū) 動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
[0033] [第一實施例]
[0034] 現(xiàn)在參看圖2,其示出了根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化 方法。
[0035] 如圖2所示,在步驟S21中,對于查詢語句中一預(yù)定層級中的至少兩個復(fù)雜謂詞中 的每一個,基于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的 過濾性。
[0036] 首先對本實施例所涉及的技術(shù)術(shù)語進(jìn)行簡單的說明。
[0037] 以結(jié)構(gòu)化查詢語言為例,謂詞位于查詢語句中的"Where"指令之后,其用于構(gòu)造條 件,以過濾出全部數(shù)據(jù)記錄中滿足這些條件的記錄。如上文所述,在本領(lǐng)域中,通常將順序 包含自變量、操作關(guān)系運(yùn)算符或邏輯運(yùn)算符、連接常量且所述自變量不包含函數(shù)、表達(dá)式、 或分句的謂詞稱作簡單謂詞。簡單謂詞的例子可以包括但不限制于:COL op Value,C0L IS NULL, COL IS NOT NULL, COL BETWEEN valuelAND value2, COLOvalue, COL NOT BETWEEN valuel AND value2 等等,其中,op 表不 " = value、valuel、value2 為常量。簡單謂詞也稱為一階(Stagel)謂詞,其在查詢語句運(yùn)行時,由關(guān)系型數(shù)據(jù)庫管理 系統(tǒng)(RDBMS)中的數(shù)據(jù)管理器(DM)執(zhí)行。除簡單謂詞外的其他類謂詞稱作復(fù)雜謂詞,例如 COLlop C0L2+value,TLC0Llop T2.C0L2 等等。復(fù)雜謂詞也稱為二階(Stage2)謂詞,其在 查詢語句運(yùn)行時,由RDBMS中關(guān)系數(shù)據(jù)服務(wù)器來執(zhí)行。
[0038] 謂詞的過濾性用來反映謂詞過濾出復(fù)合條件的記錄的能力,其可以通過各種適當(dāng) 的參數(shù)、變量來表示。例如,過濾因子是一種常用的過濾性表示參數(shù)。謂詞的過濾因子是介 于〇和1之間的數(shù)字,用于估計謂詞為真的記錄占全部數(shù)據(jù)記錄的比例。如前文中所提到 的,在現(xiàn)有技術(shù)中,簡單謂詞的過濾因子通常是基于粗略、概要的數(shù)據(jù)庫統(tǒng)計信息估算出來 的,因此往往不夠準(zhǔn)確。
[0039] 下面將以一個具體的謂詞表達(dá)式為例,對該步驟中的處理進(jìn)行詳細(xì)描述。
[0040] 例如,假設(shè)示意性的查詢語句為:
[0041] SELECT*
[0042] FROM ΤΙ
[0043] WHERE PI AND (P20R(P3AND P40R Ρ5)),
[0044] 其中,?1,?2沖3,?4和?5均為復(fù)雜謂詞。 ……(1)
[0045] 根據(jù)查詢語句執(zhí)行順序的規(guī)則,分析該謂詞表達(dá)式可知,Ρ3和Ρ4是最高層級(第4 層級)的謂詞,即,在執(zhí)行所述查詢語句時,最先執(zhí)行的謂詞;Ρ5是第3層級的謂詞,即在執(zhí) 行完Ρ3和Ρ4后執(zhí)行的謂詞;Ρ2和Ρ1分別是第2層級和第1層級的謂詞。下面以預(yù)定層 級是最高層級為例,對步驟21中的處理進(jìn)行描述。
[0046] 首先,確定僅使用謂詞Ρ3和僅使用謂詞Ρ4進(jìn)行數(shù)據(jù)記錄查詢時,查詢到的數(shù)據(jù)記 錄的序號。
[0047] 從表達(dá)式(1)可知,查詢語句將針對表Τ1中的數(shù)據(jù)記錄進(jìn)行查詢。為了便于說明, 假設(shè)表Τ1中僅存在8條數(shù)據(jù)記錄。即,不使用任何謂詞進(jìn)行數(shù)據(jù)記錄查詢時(SELECT*FR0M T1)將查詢到從記錄1到記錄8共8條記錄。假設(shè),僅使用謂詞P3進(jìn)行數(shù)據(jù)記錄查詢 時(SELECT*FR0M T1WHERE P3),查詢到全部記錄;而僅使用謂詞P4進(jìn)行數(shù)據(jù)記錄查詢時 (SELECT*FR0M T1WHERE P4),查詢到記錄1,記錄2,記錄7和記錄8。
[0048] 接著,針對謂詞P3和P4分別建立對應(yīng)的N元行向量以表示其過濾性,其中N是不 使用任何謂詞進(jìn)行數(shù)據(jù)記錄查詢時查詢到的數(shù)據(jù)記錄(即表T1中的全部數(shù)據(jù)記錄)的數(shù)目, 并且在該行向量中,與所述查詢到的數(shù)據(jù)記錄的序號對應(yīng)位置的元素的值為1,其余位置的 元素的值為0。由此,可以得到如下分別與P3和P4對應(yīng)的N元行向量:
[0049] P3 [11111111]
[0050] P4 [1 1 0 0 0 0 1 1] ......(2)
[0051] 在本示例中,通過使用單個復(fù)雜謂詞對要查詢的數(shù)據(jù)記錄進(jìn)行實際查詢的查詢結(jié) 果來表示謂詞的過濾性,因此是非常準(zhǔn)確的。
[0052] 隨后,在步驟S22中,基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排 序,以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。
[0053] 謂詞連接詞是對其前后連接的兩個謂詞進(jìn)行邏輯運(yùn)算的邏輯運(yùn)算符,包括AND和 0R??梢岳斫?,在謂詞連接詞為AND的情況下,對于其連接的兩個的謂詞而言,應(yīng)當(dāng)將在運(yùn) 行查詢語句時能夠過濾出(查詢出)較少數(shù)據(jù)記錄的謂詞放在前面,以減少后面的謂詞處理 的數(shù)據(jù)記錄的數(shù)目,從而減少總體的謂詞估值檢查。例如,假設(shè):表MAIN_TABLE中有1000 條記錄,示意性查詢語句為 SELECT*FR0M MAIN_TABLE WHERE Predicateland Predicate〗; 謂詞Predicatel可以過濾出總記錄數(shù)中的800條記錄,謂詞Predicate2可以過濾出總記 錄數(shù)中的100條記錄。按照目前的謂詞順序,在執(zhí)行該查詢語句時,首先需要對于數(shù)據(jù)表 中的所有記錄逐條確定是否滿足謂詞Predicatel,即謂詞Predicatel被估值檢查1000 次;由于該查詢語句中的謂詞連接詞為AND,所以該查詢語句要查詢的是同時滿足謂詞 Predicatel和predicate2的的記錄,因此隨后僅針對由Predicatel過濾出的800條記錄 逐條確定是否滿足謂詞Predicate〗,即謂詞Predicate〗被估值檢查800次,所以將進(jìn)行總 計1800次的謂詞估值檢查。然而,如果將謂詞的順序顛倒,即將謂詞Predicate放在謂詞 連接詞AND之前,則Predicate〗將被估值檢查1000次,但是Predicatel將僅被估值檢查 100次,所以將進(jìn)行總計1100次的謂詞檢查。與此相反,在謂詞連接詞為0R的情況下,對于 其連結(jié)的兩個的謂詞而言,應(yīng)當(dāng)將在運(yùn)行查詢語句時能夠過濾出(查詢出)較多數(shù)據(jù)記錄的 謂詞放在前面,以盡可能先取出較多的數(shù)據(jù)。
[0054] 在本申請中,在謂詞連接詞為AND的情況下,將能夠過濾出較少的數(shù)據(jù)記錄的謂 詞稱為過濾性強(qiáng)的謂詞;相反在謂詞連接詞為0R的情況下,將能夠過濾出較多的數(shù)據(jù)記錄 的謂詞稱為過濾性強(qiáng)的謂詞。
[0055] 圖3示出了步驟S22的示例性處理過程。以下將參考圖3對步驟S22中的處理進(jìn) 行詳細(xì)描述。
[0056] 在步驟S221,對于各個N元行向量,確定其中值為1的元素的數(shù)目。
[0057] 對于上述示例的最高層級的P3和P4而言,從表達(dá)式(2)可以看出,與P3對應(yīng)的N 元行向量中值為1的元素的數(shù)目是8,與P4對應(yīng)的N元行向量中值為1的元素的數(shù)目是4。 能夠理解,N元行向量中值為1的元素越多,則表示與該N元行向量對應(yīng)的謂詞過濾出的數(shù) 據(jù)記錄越多。
[0058] 隨后,在步驟S222,根據(jù)該預(yù)定層級的復(fù)雜謂詞之間的謂詞連接詞,基于各個N元 行向量中值為1的元素的數(shù)目來對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序。具體的,在謂 詞連接詞為AND的情況下,使得與值為1的元素的數(shù)目少的N元行向量對應(yīng)的復(fù)雜謂詞排 在與值為1的元素的數(shù)目多的N元行向量對應(yīng)的復(fù)雜謂詞之前;在謂詞連接詞為0R的情況 下,使得與值為1的元素的數(shù)目多的N元行向量對應(yīng)的復(fù)雜謂詞排在與值為1的元素的數(shù) 目少的N元行向量對應(yīng)的復(fù)雜謂詞之前。
[0059] P3和P4之間的謂詞連接詞為AND,根據(jù)前面的分析可知,應(yīng)當(dāng)將過濾性強(qiáng)的謂詞, 即在運(yùn)行查詢語句時能夠過濾出較少數(shù)據(jù)記錄的謂詞放在前面。因此,將P3和P4的順序 顛倒,使得P4排在P3之前。
[0060] 至此,對最高層級的謂詞P3和P4進(jìn)行了重新排序。需要說明的是,雖然在上面的 示例中P1到P5均為復(fù)雜謂詞,但是上述處理步驟也可以應(yīng)用于包含有簡單謂詞的謂詞表 達(dá)式。例如,假設(shè)謂詞表達(dá)式為P1AND(P20R(P30R P40R P5)),其中P1,P2,P4和P5為復(fù)雜 謂詞,P3為簡單謂詞。在此情況下,在針對最高層級P30R P40R P5進(jìn)行重新排序時,可以 同樣的應(yīng)用上述步驟S21和S22,僅對復(fù)雜謂詞P4和P5的過濾性進(jìn)行比較并相應(yīng)地調(diào)整其 順序,而不對P3進(jìn)行任何處理。
[0061] 另外,在上面的不例中最1?層級僅包含兩個復(fù)雜謂詞P3和P4,事實上該最1?層級 或者其他層級中的復(fù)雜謂詞可能不止兩個。在此情況下,同樣可以應(yīng)用上述處理步驟。例 如,假設(shè)謂詞表達(dá)式為P1AND(P20R(P3AND P4AND P5)),其中P3,P4和P5均為復(fù)雜謂詞。在 此情況下,在針對最高層級P3AND P4AND P5進(jìn)行重新排序時,可以同樣的應(yīng)用上述步驟S21 和S22,對三個復(fù)雜謂詞P3, P4和P5的過濾性進(jìn)行比較并相應(yīng)地調(diào)整其順序。另一方面, 本領(lǐng)域技術(shù)人員在應(yīng)用根據(jù)本發(fā)明實施例的上述方法時可以根據(jù)需要僅對預(yù)定層級的部 分復(fù)雜謂詞進(jìn)行所述謂詞重新排序。例如,對于上述謂詞表達(dá)式P1AND(P20R(P3AND P4AND P5)),盡管最高層級有三個復(fù)雜謂詞,但是為了避免重新排序過程耗時太長,或者例如用戶 僅關(guān)心其中謂詞P3和P4的優(yōu)化,則可以只對該最高層級中的謂詞P3和P4進(jìn)行重新排序, 即在進(jìn)行重新排序時不考慮P5。
[0062] 回到圖2,隨后可以通過步驟S23-S26繼續(xù)對謂詞表達(dá)式中的其他謂詞進(jìn)行重新 排序。
[0063] 如圖2所示,在步驟S23中,對于由所述重新排序當(dāng)前針對的層級中的各謂詞及連 接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞,確定該復(fù)合謂詞的過濾性。
[0064] 由于步驟S22中的重新排序操作當(dāng)前所針對的層級中的各謂詞及連接它們的謂 詞連接詞構(gòu)成的復(fù)合謂詞仍可能要參加后續(xù)的重新排序,所以需確定該復(fù)合謂詞的過濾 性。
[0065] 具體的,在該步驟中,對于與所述重新排序當(dāng)前所針對的層級中的各個謂詞對應(yīng) 的各個N元行向量,逐個元素地執(zhí)行由所述謂詞連接詞代表的邏輯運(yùn)算,得到對應(yīng)于所述 復(fù)合謂詞的中間N元行向量。
[0066] 對于上述示例的最高層級的P3和P4而言,如圖4所示,將分別與P3和P4對應(yīng)的 N元行向量對齊,并逐個元素地對其中對應(yīng)位置的元素執(zhí)行AND運(yùn)算,由此得到中間N元行 向量TMP[1 1 0 0 0 0 1 1],用來表示復(fù)合謂詞(P3AND P4)的過濾性。
[0067] 需要說明的是,在該步驟中將對所述重新排序操作當(dāng)前所針對的層級中所有謂詞 的N元行向量進(jìn)行由謂詞連接詞代表的邏輯運(yùn)算,而并非僅對被實際進(jìn)行了位置調(diào)整的謂 詞進(jìn)行該運(yùn)算。例如,對于謂詞表達(dá)式P1AND(P20R(P3AND P4AND P5))(其中P1,P2,P4和 P5為復(fù)雜謂詞,P3為簡單謂詞),根據(jù)本實施例,在之前的步驟中僅需對復(fù)雜謂詞P4和P5確 定過濾性并進(jìn)行重新排序操作,而不必對簡單謂詞P3進(jìn)行操作。因此,首先對于P3建立對 應(yīng)的N元行向量(具體操作參見上文中步驟S21中的描述,此處不再贅述),隨后將與P3, P4 和P5分別對應(yīng)的3個N元行向量逐個元素地進(jìn)行AND操作,得到用于表示復(fù)雜謂詞(P3AND P4AND P5)的過濾性的中間N元行向量。
[0068] 在步驟S24中,對于比重新排序當(dāng)前針對的層級低一層級的至少兩個復(fù)雜謂詞中 的每一個,基于由僅使用該復(fù)雜謂詞對要查詢的數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂 詞的過濾性。
[0069] 在步驟S25中,基于所述過濾性,對所述低一層級的謂詞進(jìn)行重新排序,以使得過 濾性強(qiáng)的復(fù)雜謂詞位于過濾性弱的復(fù)雜謂詞之前。
[0070] 通過步驟S24和S25,對于比步驟S22中的重新排序過程當(dāng)前針對的層級低一層 級的謂詞進(jìn)行重新排序。步驟S24和S25中的操作分別與步驟S21和S22中的操作基本相 同,此處不再贅述,而僅以上述示例謂詞表達(dá)式P1AND(P20R(P3AND P40R P5))(其中P1到 P5均為復(fù)雜謂詞)為例,進(jìn)行簡單描述。
[0071] 如前所述,對于該示例謂詞表達(dá)式而言,P3和P4是最高層級(第4層級)的謂詞, P5是第3層級的謂詞。另外,復(fù)合謂詞(P3AND P4)也位于第3層級,并且可以看作是復(fù)雜 謂詞。因此,此時將對復(fù)合謂詞(P3AND P4)以及P5執(zhí)行重新排序過程。
[0072] 假設(shè)僅使用謂詞P5進(jìn)行數(shù)據(jù)記錄查詢時(SELECT*FR0M T1WHERE P5),查詢到記錄 2和記錄3。由此,可以針對謂詞P5建立對應(yīng)的N元行向量:P5[0 1 1 0 0 0 0 0]。 如圖4所示,對應(yīng)于復(fù)合謂詞(P3ANDP4)的N元行向量TMP[1 1 0 0 0 0 1 1]中 值為1的元素的數(shù)目是4,與P5對應(yīng)的N元行向量中值為1的元素的數(shù)目是2。由于(P3AND P4)和P5之間的謂詞連接詞為0R,根據(jù)前面的分析可知,應(yīng)當(dāng)將過濾性強(qiáng)的謂詞,即在運(yùn)行 查詢語句時能夠過濾出較多數(shù)據(jù)記錄的謂詞放在前面,因此,不需改變(P3AND P4)和P5的 順序。
[0073] 隨后,在步驟S26中判斷是否對查詢語句的預(yù)定結(jié)束層級的謂詞執(zhí)行了重新排 序。如果判斷結(jié)果為"是",則根據(jù)本實施例的優(yōu)化方法結(jié)束;如果判斷結(jié)果為"否",則回到 步驟S23。
[0074] 例如,對于上述示例謂詞表達(dá)式P1AND (P20R(P3AND P40R P5))(其中P1到P5均 為復(fù)雜謂詞),假設(shè)所述預(yù)定結(jié)束層級為最低層級,即第一層級,則此時步驟S26的判斷結(jié)果 為否,處理返回到步驟S23。下面將結(jié)合圖4,對將根據(jù)本實施例的優(yōu)化方法應(yīng)用于該示例 謂詞表達(dá)式的后續(xù)處理步驟進(jìn)行簡單描述。
[0075] 圖4示出了應(yīng)用根據(jù)本實施例的優(yōu)化方法對謂詞執(zhí)行重新排序過程的示例情形。 假設(shè)僅使用謂詞P2進(jìn)行數(shù)據(jù)記錄查詢時(SELECT*FR0M T1WHERE P2),查詢到記錄1和記錄 8 ;僅使用謂詞P1進(jìn)行數(shù)據(jù)記錄查詢時(SELECT*FR0M T1WHERE P1),查詢到記錄2,記錄3, 記錄4,記錄6和記錄8。在該情況下,對應(yīng)于P2和P1的N元行向量分別為P2[l 0 0 0 0 0 0 1]和P1[0 1 1 1 0 1 0 1]。如圖4所示,在針對第3層級的謂詞執(zhí)行 重新排序過程之后,確定對應(yīng)于復(fù)合謂詞P3ANDP40RP5的N元行向量TMP[1 1 1 0 0 0 1 1],其中值為1的元素的數(shù)目是5,而與P2對應(yīng)的N元行向量中值為1的元素的數(shù)目 是2。由于P2和(P3AND P4)0R P5之間的謂詞連接詞為0R,因此,不需改變P2和(P3AND P4)0RP5的順序。至此,對從第4層級到第2層級的謂詞執(zhí)行了謂詞重新排序過程。由于 預(yù)定結(jié)束層級為第一層級,因此此時步驟S26的判斷結(jié)果為否,處理再次返回到步驟S23。 此時,確定對應(yīng)于復(fù)合謂詞P20R(P3AND P40R P5)的N元行向量TMP[11 1 0 0 0 1 1],其中值為1的元素的數(shù)目是5,而與P1對應(yīng)的N元行向量中值為1的元素的數(shù)目也是 5,因此不需改變P1和P20R(P3AND P40R P5)的順序。至此,對從第4層級到第1層級的謂 詞執(zhí)行了謂詞重新排序過程。此時,步驟S26的判斷結(jié)果為"是",對于整個謂詞表達(dá)式中的 各個謂詞執(zhí)行根據(jù)本實施例的優(yōu)化方法的過程結(jié)束。
[0076] 以上已經(jīng)對根據(jù)本發(fā)明一個實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法進(jìn) 行了描述。在該實施例中,用精確表示使用單個謂詞對要查詢的數(shù)據(jù)記錄進(jìn)行實際查詢的 結(jié)果的行向量來表示謂詞的過濾性,并基于該精確的過濾性對謂詞進(jìn)行重新排序。所述過 濾性具有高粒度、高精確性,基于該過濾性進(jìn)行的重新排序考慮了實際的數(shù)據(jù),因此是可靠 和精確的,從而應(yīng)用本實施例的優(yōu)化方法的查詢語句在執(zhí)行時可以獲得高效的執(zhí)行效率。
[0077] 需要說明的是,雖然上文中結(jié)合圖2到圖4,描述了從查詢語句最高層級的謂詞開 始到最低層級的謂詞為止對整個謂詞表達(dá)式中的各個謂詞執(zhí)行謂詞重新排序過程,但是這 并非是必須的。更明確的說,本領(lǐng)域技術(shù)人員在應(yīng)用根據(jù)本發(fā)明上述實施例的方法時可以 根據(jù)需要僅對預(yù)定的一個或多個層級的謂詞進(jìn)行所述謂詞重新排序。例如,為了避免重新 排序過程耗時太長,或者諸如僅關(guān)心查詢中謂詞P3和P4的優(yōu)化,則可以只對最高層級的謂 詞P3和P4進(jìn)行重新排序。因此上述實施例中的步驟S23到S26并非是必須的。
[0078][第二實施例]
[0079] 根據(jù)上述實施例,在對復(fù)雜謂詞進(jìn)行重新排序時,不考慮簡單謂詞,即簡單謂詞不 參與重新排序過程。然而事實上,簡單謂詞的存在對于復(fù)雜謂詞的重新排序可能是有影響 的。在本實施例中,在對復(fù)雜謂詞進(jìn)行重新排序時,將考慮簡單謂詞的過濾性,以獲得更加 精確的排序,從而使得查詢語句在執(zhí)行時可以獲得更高效的執(zhí)行效率。
[0080] 根據(jù)本實施例的優(yōu)化方法與第一實施例中的優(yōu)化方法基本相同,其區(qū)別僅在于步 驟S221中的處理。具體地,在根據(jù)本實施例的優(yōu)化方法中,在預(yù)定層級中的謂詞中存在至 少一個簡單謂詞的情況下,在步驟S221中,對于每一個所述簡單謂詞,建立對應(yīng)的所述N元 行向量;隨后,對于每個與所述復(fù)雜謂詞對應(yīng)的N元行向量,在謂詞連接詞為AND時,確定該 N元行向量中除了與所述簡單謂詞的N元行向量中值為0的元素對應(yīng)位置的元素之外,其 他值為1的元素的數(shù)目,作為該N元行向量中值為1的元素的數(shù)目;在謂詞連接詞為0R時, 確定該N元行向量中除了與所述簡單謂詞的N元行向量中值為1的元素對應(yīng)位置的元素之 夕卜,其他值為1的元素的數(shù)目,作為該N元行向量中值為1的元素的數(shù)目。
[0081] 假設(shè)當(dāng)前進(jìn)行重新排序的層級中的謂詞表達(dá)式為:P10R P20R P3,其中P1為簡單 謂詞,P2和P3都是復(fù)雜謂詞,并且通過步驟S21已經(jīng)確定對應(yīng)于謂詞P2和P3的N元行向 量分別為:
[0082] P2[l 10 110 110 1]
[0083] P3 [0 0 1 1 1 1 1 0 1 0] ......(3)
[0084] 以下將結(jié)合圖5來說明應(yīng)用根據(jù)本實施例的優(yōu)化方法對該示例謂詞執(zhí)行重新排 序過程的示例情形。
[0085] 首先對于簡單謂詞P1確定其對應(yīng)的N元行向量。假設(shè)僅使用P1進(jìn)行數(shù)據(jù)記錄查 詢時,查詢到記錄1,記錄2,記錄5,記錄8和記錄10,貝u可以確定對應(yīng)的N元行向量為PI [1 1 0 0 1 0 0 1 0 1]。如圖5所示,如果不考慮P1的過濾性而對P2和P3進(jìn)行排 序(即按照第一實施例的步驟S221進(jìn)行處理),則可以確定與P2對應(yīng)的N元行向量中值為1 的元素的數(shù)目是7,與P3對應(yīng)的N元行向量中值為1的元素的數(shù)目是6。由于P2和P3 2 間的謂詞連接詞為0R,因此在后續(xù)的步驟S222中應(yīng)顛倒P2和P3的順序。然而,在實際執(zhí) 行查詢語句時,簡單謂詞在數(shù)據(jù)管理器層就被執(zhí)行了,而并非與復(fù)雜謂詞一樣要等到在關(guān) 系數(shù)據(jù)服務(wù)器層才能執(zhí)行,因此對于例如上述的謂詞表達(dá)式,在執(zhí)行P2和P3時,實際上已 經(jīng)知道執(zhí)行P1的查詢結(jié)果。更明確的說,如圖5所示,由于執(zhí)行P1將過濾出記錄1,記錄 2,記錄5,記錄8和記錄10,并且P1,P2和P3之間的謂詞連接詞為0R,因此在執(zhí)行P2和P3 時已知記錄1,記錄2,記錄5,記錄8和記錄10滿足謂詞表達(dá)式P10R P20R P3,從而對于P2 和P3而言,比較其相對于未被P1過濾出的數(shù)據(jù)記錄的過濾性更有意義,基于該過濾性確定 的排列順序也更準(zhǔn)確。因此在該步驟S221中,對于與P2對應(yīng)的N元行向量,確定其中除了 與P1的N元行向量中值為1的元素的位置(即位置1,2, 5, 8, 10)對應(yīng)的位置中的元素之外, 其他值為1的元素的數(shù)目為2,對于與P3對應(yīng)的N元行向量,確定其中除了與P1的N元行 向量中值為1的元素的位置對應(yīng)的位置中的元素之外,其他值為1的元素的數(shù)目為5。在后 續(xù)的步驟S222中,將基于這一元素數(shù)目值確定是否需要顛倒P2和P3的順序。
[0086] 需要說明的是,本領(lǐng)域技術(shù)人員能夠理解,對于例如P1AND P2AND P3的連接詞為 AND的謂詞表達(dá)式(其中P1為簡單謂詞,P2和P3都是復(fù)雜謂詞),應(yīng)當(dāng)比較P2和P3相對 于已被P1過濾出的數(shù)據(jù)記錄的過濾性,即對于與P2和P3對應(yīng)的N元行向量,應(yīng)確定其中 除了與P1的N元行向量中值為0的元素的位置(即位置3, 4, 6, 7, 9)對應(yīng)的位置中的元素 之外,其他值為1的元素的數(shù)目。
[0087][第三實施例]
[0088] 在上述第一和第二實施例中,使用具有高粒度、高精確性的行向量來表示謂詞的 過濾性。然而,當(dāng)數(shù)據(jù)記錄的數(shù)量很大時,存儲對應(yīng)于各個謂詞的行向量需占用很大的存儲 空間,并且基于行向量來確定是否要改變謂詞現(xiàn)有的排序的計算量也較大。本實施例中提 出了一種粒度和精確性相對較低,但是占用的存儲空間和計算量相對較小,從而執(zhí)行效率 較高的優(yōu)化方法。
[0089] 根據(jù)本實施例的優(yōu)化方法與第一實施例中的優(yōu)化方法基本相同,其區(qū)別僅在于在 本實施例中,使用謂詞的過濾因子來表示謂詞的過濾性。下面,將參考圖2對根據(jù)本實施例 的優(yōu)化方法進(jìn)行說明。在下文中,僅就根據(jù)本實施例的優(yōu)化方優(yōu)與第一實施例中不同的部 分進(jìn)行描述,對于相同的部分則不再詳細(xì)說明,以免贅述。
[0090] 在步驟S21中,對于查詢語句中一預(yù)定層級的至少兩個復(fù)雜謂詞中的每一個,基 于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾性。
[0091] 在該步驟中,首先對于所述兩個復(fù)雜謂詞中的每一個,確定僅使該復(fù)雜謂詞查詢 到的數(shù)據(jù)記錄的數(shù)目。
[0092] 例如,仍然以表達(dá)式(1)所示的查詢語句為例。對于例如其中最高層級的謂詞,假 設(shè)如前所述,僅使用謂詞P3進(jìn)行數(shù)據(jù)記錄查詢時查詢到全部8條記錄;而僅使用謂詞P4進(jìn) 行數(shù)據(jù)記錄查詢時查詢到4條記錄(記錄1,記錄2,記錄7和記錄8)。
[0093] 隨后,根據(jù)所述查詢到的數(shù)據(jù)記錄的數(shù)目,計算該復(fù)雜謂詞的過濾因子。對于P3, 計算出其過濾因子為8/8=1,對于P4,計算出其過濾因子為4/8=0. 5。
[0094] 在步驟S22中,基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序,以使 得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。
[0095] 具體的,在該層級中的謂詞連接詞為AND的情況下,使得過濾因子的值小的復(fù)雜 謂詞排在過濾因子的值大的復(fù)雜謂詞之前;在謂詞連接詞為0R的情況下,使得過濾因子的 值大的復(fù)雜謂詞排在過濾因子的值小的復(fù)雜謂詞之前。
[0096] 對于上述示例的最高層級的P3和P4而言,由于P3和P4之間的謂詞連接詞為AND, 并且P3的過濾因子大于P4的過濾因子,因此,將P3和P4的順序顛倒,使得P4排在P3之 刖。
[0097] 至此,對最高層級的謂詞P3和P4進(jìn)行了重新排序。隨后,根據(jù)本實施例的優(yōu)化方 法可以通過步驟S23-S26繼續(xù)對謂詞表達(dá)式中的其他謂詞進(jìn)行重新排序。
[0098] 如圖2所示,在步驟S23中,對于由所述重新排序當(dāng)前針對的層級中的各謂詞及連 接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞,確定該復(fù)合謂詞的過濾性。
[0099] 這里,采用本領(lǐng)域中慣用的方法來確定復(fù)合謂詞的過濾性。具體地,在謂詞連接詞 為AND的情況下,將所述重新排序當(dāng)前所針對的層級中的各個謂詞的過濾因子相乘,作為 所述復(fù)合謂詞的過濾因子;在所述謂詞連接詞為0R的情況下,將所述重新排序當(dāng)前所針對 的層級中的各個謂詞的過濾因子相加,作為所述復(fù)合謂詞的過濾因子。
[0100] 對于上述示例的最高層級的P3和P4而言,復(fù)合謂詞(P3AND P4)的過濾因子為 1X0. 5=0. 5〇
[0101] 需要說明的是,與第一實施例中相同,在該步驟中將對所述重新排序操作當(dāng)前所 針對的層級中所有謂詞的過濾因子進(jìn)行相乘或相加運(yùn)算,而并非僅對被實際了進(jìn)行位置調(diào) 整的謂詞進(jìn)行該運(yùn)算。
[0102] 在步驟S24中,對于比重新排序當(dāng)前針對的層級低一層級的至少兩個復(fù)雜謂詞中 的每一個,基于由僅使用該復(fù)雜謂詞對要查詢的數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂 詞的過濾性。
[0103] 在步驟S25中,基于所述過濾性,對所述低一層級的謂詞進(jìn)行重新排序,以使得過 濾性強(qiáng)的復(fù)雜謂詞位于過濾性弱的復(fù)雜謂詞之前。
[0104] 通過步驟S24和S25,對于比步驟S22中的重新排序過程當(dāng)前所針對的層級低一層 級的謂詞進(jìn)行重新排序。步驟S24和S25中的操作分別與步驟S21和S22中的操作基本相 同,此處不再贅述,而僅以上述示例謂詞表達(dá)式P1AND(P20R(P3AND P40R P5))(其中P1到 P5均為復(fù)雜謂詞)為例,進(jìn)行簡單描述。
[0105] 如前所述,對于該示例謂詞表達(dá)式而言,P3和P4是最高層級(第4層級)的謂詞, P5是第3層級的謂詞。另外,復(fù)合謂詞(P3AND P4)也位于第3層級,并且可以看作是復(fù)雜 謂詞。因此,此時將對復(fù)合謂詞(P3AND P4)以及P5執(zhí)行重新排序過程。
[0106] 假設(shè)如前所述僅使用謂詞P5進(jìn)行數(shù)據(jù)記錄查詢時,查詢到2條記錄(記錄2和記 錄3)。由此,可以計算出謂詞P5的過濾因子為:2/8=0. 25。由于復(fù)合謂詞(P3ANDP4)的過 濾因子為〇. 5,并且(P3AND P4)和P5之間的謂詞連接詞為0R,因此,不需改變(P3AND P4) 和P5的順序。
[0107] 隨后,在步驟S26中判斷是否對查詢語句的預(yù)定結(jié)束層級的謂詞執(zhí)行了重新排 序。如果判斷結(jié)果為"是",則根據(jù)本實施例的優(yōu)化方法結(jié)束;如果判斷結(jié)果為"否",則回到 步驟S23。
[0108] 例如,對于上述示例謂詞表達(dá)式P1AND (P20R(P3AND P40R P5)),假設(shè)所述預(yù)定結(jié) 束層級為最低層級,即第一層級,則此時步驟S26的判斷結(jié)果為否,處理返回到步驟S23。 以下,對將根據(jù)本實施例的優(yōu)化方法應(yīng)用于該示例謂詞表達(dá)式的后續(xù)處理步驟進(jìn)行簡單描 述。
[0109] 假設(shè)僅使用謂詞P2進(jìn)行數(shù)據(jù)記錄查詢時查詢到兩條記錄(記錄1和記錄8), 由此可以確定P2的過濾因子為2/8=0. 25,而復(fù)合謂詞P3AND P40R P5的過濾因子為 0. 5+0. 25=0. 75。由于P2和(P3AND P4)0R P5之間的謂詞連接詞為OR,因此,不需改變P2 和(P3AND P4) OR P5的順序。至此,對從第4層級到第2層級的謂詞執(zhí)行了謂詞重新排序 過程。由于預(yù)定結(jié)束層級為第一層級,因此此時步驟S26的判斷結(jié)果為否,處理再次返回到 步驟S23。假設(shè)僅使用謂詞P1進(jìn)行數(shù)據(jù)記錄查詢時查詢到5條記錄(記錄2, 3, 4, 6和8), 由此可以確定P1的過濾因子為5/8=0. 625,而復(fù)合謂詞P20R(P3AND P40R P5)的過濾因子 為0. 75+0. 25=1。由于P1和P20R(P3AND P40R P5)之間的謂詞連接詞為AND,因此顛倒P1 和P20R(P3AND P40R P5)的順序。至此,對從第4層級到第1層級的謂詞執(zhí)行了謂詞重新 排序過程。此時,步驟S26的判斷結(jié)果為"是",對于整個謂詞表達(dá)式中的各個謂詞執(zhí)行根據(jù) 本實施例的優(yōu)化方法的過程結(jié)束。
[0110] 需要說明的是,與第一實施例類似,本領(lǐng)域技術(shù)人員在應(yīng)用根據(jù)該實施例的方法 時可以根據(jù)需要僅對預(yù)定的一個或多個層級的謂詞進(jìn)行所述謂詞重新排序。例如,為了避 免重新排序過程耗時太長,或者諸如僅關(guān)心查詢中謂詞P3和P4的優(yōu)化,則可以只對最高層 級的謂詞P3和P4進(jìn)行重新排序。因此本實施例中的步驟S23到S26并非是必須的。
[0111] 可以看出,對于表達(dá)式(1)中所示的謂詞表達(dá)式應(yīng)用根據(jù)本實施例的優(yōu)化方法所 確定的排列順序與應(yīng)用第一實施例所確定的排列順序并不相同。雖然與第一實施例相比, 本實施例中所確定的過濾性的粒度較低、精確度較低,因而基于該過濾性對謂詞進(jìn)行的重 新排序可能不如第一實施例中精確;然而,本實施例中不需要存儲大量的向量,因此節(jié)省了 存儲空間,并且基于過濾因子來確定是否要改變謂詞現(xiàn)有的排序的計算量也大大減小。另 一方面,不同于現(xiàn)有技術(shù)中根據(jù)統(tǒng)計信息來估算簡單謂詞的過濾因子,在本實施例中是根 據(jù)將各個謂詞應(yīng)用于要查詢的數(shù)據(jù)記錄的實際查詢結(jié)果來計算過濾因子的。因此本實施例 中的過濾因子相對于現(xiàn)有技術(shù)要精確得多。
[0112] 下面,參照圖6來描述根據(jù)本發(fā)明實施例的關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化設(shè) 備的結(jié)構(gòu)框圖。該設(shè)備可以執(zhí)行以上各個實施例所述的方法。
[0113] 如圖6所示,根據(jù)本發(fā)明實施例的優(yōu)化設(shè)備600包括過濾性確定裝置601、和重新 排序裝置602。該優(yōu)化設(shè)備600可以在數(shù)據(jù)庫中的優(yōu)化器內(nèi)部實現(xiàn),也可以實現(xiàn)為獨(dú)立于優(yōu) 化器的外部設(shè)備。
[0114] 過濾性確定裝置601對于查詢語句中一層級的至少兩個復(fù)雜謂詞中的每一個,基 于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾性。重新 排序裝置602基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序,以使得過濾性 強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。在排序過程中,該重新排序裝置602僅對確 定了過濾性的復(fù)雜謂詞(即用戶關(guān)注的復(fù)雜謂詞)進(jìn)行順序調(diào)整,而對于未確定過濾性的謂 詞的順序則并不關(guān)心。
[0115] 謂詞的過濾性用來反映謂詞過濾出復(fù)合條件的記錄的能力,其可以通過各種適當(dāng) 的參數(shù)、變量來表示。根據(jù)用于表示過濾性的具體參數(shù)、變量的不同,所述過濾性確定裝置 601和重新排序裝置602可以采用不同的結(jié)構(gòu)或執(zhí)行不同的功能。下面,以使用表示實際查 詢的結(jié)果的行向量來表示謂詞的過濾性的情況為例,詳細(xì)描述過濾性確定裝置601和重新 排序裝置602。
[0116] 圖7示出了過濾性確定裝置601的結(jié)構(gòu)框圖。如圖7所示,過濾性確定裝置601 可以包括數(shù)據(jù)記錄確定單元6011和第一過濾性確定單元6012。
[0117] 數(shù)據(jù)記錄確定單元6011對于至少兩個復(fù)雜謂詞中的每一個,確定僅使用其進(jìn)行 數(shù)據(jù)記錄查詢時查詢到的數(shù)據(jù)記錄的序號。第一過濾性確定單元6012根據(jù)數(shù)據(jù)記錄確定 單元6011查詢到的數(shù)據(jù)記錄的序號,對相應(yīng)的復(fù)雜謂詞建立對應(yīng)的N元行向量,其中N是 所述預(yù)定數(shù)據(jù)記錄(全部數(shù)據(jù)記錄)的數(shù)目,并且在該行向量中,與查詢到的數(shù)據(jù)記錄的序 號對應(yīng)位置的元素的值為1,其余位置的元素的值為0。因此,根據(jù)N元行向量中的元素的 值,可以容易地確定相應(yīng)的謂詞可以過濾出哪些記錄。
[0118] 重新排序裝置602可以包括元素數(shù)目確定單元6021和順序調(diào)整單元6022。元素 數(shù)據(jù)確定單元6021對于各個N元行向量,確定其中值為1的元素的數(shù)目。順序調(diào)整單元 6022根據(jù)預(yù)定層級的復(fù)雜謂詞之間的謂詞連接詞,基于各個N元行向量中值為1的元素的 數(shù)目來對該預(yù)定層級中的謂詞進(jìn)行重新排序。能夠理解,N元行向量中值為1的元素的數(shù)目 越少,則表明與該N元行向量對應(yīng)的謂詞能夠從全部數(shù)據(jù)記錄中過濾出的數(shù)據(jù)記錄越少; 反之則表明與該N元行向量對應(yīng)的謂詞能夠從全部數(shù)據(jù)記錄中過濾出的數(shù)據(jù)記錄越多。如 前所述,在謂詞連接詞為AND的情況下,對于其連接的兩個的謂詞而言,應(yīng)當(dāng)將在運(yùn)行查詢 語句時能夠過濾出較少數(shù)據(jù)記錄的謂詞放在前面,以減少后面的謂詞處理的數(shù)據(jù)記錄的數(shù) 目,從而減少總體的謂詞估值檢查;而在謂詞連接詞為0R的情況下,則應(yīng)當(dāng)將在運(yùn)行查詢 語句時能夠過濾出較多數(shù)據(jù)記錄的謂詞放在前面。因此,順序調(diào)整調(diào)整單元6022在謂詞連 接詞為AND的情況下,把與值為1的元素的數(shù)目少的N元行向量對應(yīng)的復(fù)雜謂詞排在與值 為1的元素的數(shù)目多的N元行向量對應(yīng)的復(fù)雜謂詞之前;在謂詞連接詞為0R的情況下,把 與值為1的元素的數(shù)目多的N元行向量對應(yīng)的復(fù)雜謂詞排在與值為1的元素的數(shù)目少的N 元行向量對應(yīng)的復(fù)雜謂詞之前。
[0119] 以上以對于查詢語句中預(yù)定層級的謂詞進(jìn)行重新排序為例,描述了根據(jù)本發(fā)明實 施例的上述優(yōu)化設(shè)備600的結(jié)構(gòu)和功能。實際上,通過對查詢語句中多個層級的謂詞分別 應(yīng)用上述優(yōu)化設(shè)備600,可以對多個層級的謂詞進(jìn)行重新排序。需要注意的是,當(dāng)該優(yōu)化設(shè) 備600對于查詢語句中預(yù)定層級的復(fù)雜謂詞進(jìn)行了重新排序之后,由該層級中的各謂詞及 連接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞仍可能要參加后續(xù)的重新排序,所以需確定該復(fù)合 謂詞的過濾性。在此情況下,可選地,過濾性確定裝置601還可以包括第二過濾性確定單元 6013,其對于由預(yù)定層級中的各謂詞及連接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞,確定過濾 性,并將該過濾性傳遞至重新排序裝置602。具體的,第二過濾性確定單元6013對于與預(yù) 定層級中的各個謂詞對應(yīng)的各個N元行向量,逐個元素地對其中對應(yīng)位置的元素執(zhí)行由所 述謂詞連接詞代表的邏輯運(yùn)算,從而得到用于表示所述復(fù)合謂詞的過濾性的中間N元行向 量。需要說明的是,第二過濾性確定單元6013將對預(yù)定層級中所有謂詞的N元行向量進(jìn)行 由謂詞連接詞代表的邏輯運(yùn)算,而并非僅對被實際進(jìn)行了位置調(diào)整的謂詞進(jìn)行該運(yùn)算。
[0120] 如前所述,以上所述的重新排序裝置602僅對用戶關(guān)注的復(fù)雜謂詞進(jìn)行順序調(diào) 整,而對于簡單謂詞的順序則并不關(guān)心。因此,在對復(fù)雜謂詞進(jìn)行重新排序時,不考慮簡單 謂詞,即簡單謂詞不參與重新排序過程。然而事實上,簡單謂詞的存在對于復(fù)雜謂詞的重新 排序可能是有影響的。其原因在上述第二實施例中已經(jīng)進(jìn)行了說明,此處不再贅述。
[0121] 針對這一情況,可以在對復(fù)雜謂詞進(jìn)行重新排序時,考慮簡單謂詞的過濾性,以獲 得更加精確的排序。更明確地說,在所述預(yù)定層級中的謂詞中存在至少一個簡單謂詞的情 況下,元素數(shù)據(jù)確定單元6021可以排除該簡單謂詞對于復(fù)雜謂詞的過濾性的影響,來對于 該預(yù)定層級中的復(fù)雜謂詞進(jìn)行排序。具體的,對于與復(fù)雜謂詞對應(yīng)的每個N元行向量,在謂 詞連接詞為AND時,確定該N元行向量中除了與簡單謂詞的N元行向量中值為0的元素對 應(yīng)位置的元素之外,其他值為1的元素的數(shù)目,作該為N元行向量中值為1的元素;在謂詞 連接詞為OR時,確定該N元行向量中除了與簡單謂詞的N元行向量中值為1的元素對應(yīng)位 置的元素之外,其他值為1的元素的數(shù)目,作該為N元行向量中值為1的元素。順序調(diào)整單 元6022根據(jù)這樣確定的元素數(shù)目,來對謂詞進(jìn)行重新排序。
[0122] 下面,對利用實際查詢的結(jié)果計算的過濾因子來表示謂詞的過濾性的情況,描述 過濾性確定裝置601和重新排序裝置602。
[0123] 在該情形中,過濾性確定裝置601同樣可以包括數(shù)據(jù)記錄確定單元6011和第一過 濾性確定單元6012。
[0124] 數(shù)據(jù)記錄確定單元6011對于至少兩個復(fù)雜謂詞中的每一個,確定僅使用其進(jìn)行 數(shù)據(jù)記錄查詢時,查詢到的數(shù)據(jù)記錄的數(shù)目。第一過濾性確定單元6012按照上文所述的方 式根據(jù)數(shù)據(jù)記錄的數(shù)目確定相應(yīng)謂詞的過濾因子,此處不再贅述。
[0125] 重新排序裝置602基于所述過濾因子,對所述預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排 序,以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。具體的,如前文所述,為了 減少總體的謂詞估值檢查,從而提高查詢的執(zhí)行效率,在該預(yù)定層級中的謂詞連接詞為AND 的情況下,重新排序裝置602將過濾因子的值小的復(fù)雜謂詞排在過濾因子的值大的復(fù)雜謂 詞之前;當(dāng)謂詞連接詞為0R時,重新排序裝置602將過濾因子的值大的復(fù)雜謂詞排在過濾 因子的值小的復(fù)雜謂詞之前。
[0126] 如前文中提到的,根據(jù)本發(fā)明實施例的上述優(yōu)化設(shè)備600同樣可以對多個層級的 謂詞進(jìn)行重新排序。需要注意的是,當(dāng)該優(yōu)化設(shè)備600對于查詢語句中預(yù)定層級的謂詞進(jìn) 行了重新排序之后,該層級中的各謂詞及連接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞仍可能要 參加后續(xù)的重新排序,所以需確定該復(fù)合謂詞的過濾性。在此情況下,可選地,過濾性確定 裝置601還可以包括第二過濾性確定單元6013,其對于由預(yù)定層級中的各謂詞及連接它們 的謂詞連接詞構(gòu)成的復(fù)合謂詞,確定其過濾性,并將該過濾性傳遞至重新排序裝置602。這 里,采用本領(lǐng)域中慣用的方法來確定復(fù)合謂詞的過濾性。具體地,在謂詞連接詞為AND的情 況下,第二過濾性確定單元6013將該預(yù)定層級中的各個謂詞的過濾因子相乘,作為復(fù)合謂 詞的過濾因子;在謂詞連接詞為0R的情況下,第二過濾性確定單元6013將該預(yù)定層級中各 個謂詞的過濾因子相加,作為復(fù)合謂詞的過濾因子。
[0127] 需要說明的是,第二過濾性確定單元6013將對預(yù)定層級中所有謂詞的過濾因子 進(jìn)行相乘或相加運(yùn)算,而并非僅對被實際進(jìn)行了位置調(diào)整的謂詞進(jìn)行該運(yùn)算。
[0128] 根據(jù)本發(fā)明實施例的上述方法和設(shè)備根據(jù)使用單個謂詞對要查詢的數(shù)據(jù)記錄進(jìn) 行實際查詢的結(jié)果來確定過濾性,因此該過濾性具有高精確性。相應(yīng)的,基于該過濾性進(jìn)行 的重新排序考慮了實際的數(shù)據(jù),因此是可靠和精確的,從而查詢語句在執(zhí)行時可以獲得高 效的執(zhí)行效率。
[0129] 此外,根據(jù)本發(fā)明實施例的上述方法和設(shè)備使用單個謂詞對要查詢的數(shù)據(jù)記錄進(jìn) 行實際查詢的結(jié)果來確定過濾性,其不僅適用于簡單謂詞,也適用于復(fù)雜謂詞。因此,根據(jù) 本發(fā)明實施例的上述方法和設(shè)備可以應(yīng)用于同時包含簡單謂詞和復(fù)雜謂詞的查詢,因此具 有較大的適用范圍。
[0130] 此外,根據(jù)本發(fā)明實施例的上述方法和設(shè)備在根據(jù)過濾性對復(fù)雜謂詞進(jìn)行重新排 序時,排除了簡單謂詞對復(fù)雜謂詞的過濾性的影響,從而獲得了更加準(zhǔn)確的排序,使得查詢 語句在執(zhí)行時可以獲得更高效的執(zhí)行效率。
[0131] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程 序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以 代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個 用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以 基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的 組合來實現(xiàn)。
[0132] 以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也 不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技 術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨 在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進(jìn),或者使本技術(shù)領(lǐng) 域的其它普通技術(shù)人員能理解本文披露的各實施例。
【權(quán)利要求】
1. 一種用于關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化方法,包括: 對于查詢語句中一預(yù)定層級中的至少兩個復(fù)雜謂詞中的每一個,基于由僅使用該復(fù)雜 謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾性;以及 基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序,以使得過濾性強(qiáng)的復(fù)雜 謂詞排在過濾性弱的復(fù)雜謂詞之前。
2. 如權(quán)利要求1所述的優(yōu)化方法,還包括: 對于由所述預(yù)定層級中的各謂詞及連接它們的謂詞連接詞構(gòu)成的復(fù)合謂詞,確定該復(fù) 合謂詞的過濾性。
3. 如權(quán)利要求1或2所述的優(yōu)化方法,其中所述確定該復(fù)雜謂詞的過濾性包括: 確定僅使用該復(fù)雜謂詞查詢到的數(shù)據(jù)記錄的序號; 建立對應(yīng)于該復(fù)雜謂詞的N元行向量以表示該復(fù)雜謂詞的過濾性,其中N是所述預(yù)定 數(shù)據(jù)記錄的數(shù)目,并且在該行向量中,與所述查詢到的數(shù)據(jù)記錄的序號對應(yīng)位置的元素的 值為1,其余位置的元素的值為0。
4. 如權(quán)利要求3所述的優(yōu)化方法,其中所述對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序 包括: 對于各個N元行向量,確定其中值為1的元素的數(shù)目; 根據(jù)該預(yù)定層級中的復(fù)雜謂詞之間的謂詞連接詞,基于各個N元行向量中值為1的元 素的數(shù)目來對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序。
5. 如權(quán)利要求4所述的優(yōu)化方法,其中在所述預(yù)定層級中存在至少一個簡單謂詞的情 況下,所述對于各個N元行向量,確定其中值為1的元素的數(shù)目包括: 對于每一個所述簡單謂詞,建立對應(yīng)的所述N元行向量; 對于每個與所述復(fù)雜謂詞對應(yīng)的N元行向量,在謂詞連接詞為AND時,確定該N元行向 量中除了與所述簡單謂詞的N元行向量中值為0的元素對應(yīng)位置的元素之外,其他值為1 的元素的數(shù)目,作為該N元行向量中值為1的元素的數(shù)目;在謂詞連接詞為OR時,確定該N 元行向量中除了與所述簡單謂詞的N元行向量中值為1的元素對應(yīng)位置的元素之外,其他 值為1的元素的數(shù)目,作為N元行向量中值為1的元素的數(shù)目。
6. 如權(quán)利要求3所述的優(yōu)化方法,其中所述確定該復(fù)合謂詞的過濾性包括: 對于所述預(yù)定層級中未確定過濾性的各個謂詞,建立對應(yīng)的所述N元行向量, 對于與所述預(yù)定層級中的各個謂詞對應(yīng)的各個N元行向量,逐個元素地執(zhí)行由所述謂 詞連接詞代表的邏輯運(yùn)算,得到用于表示所述復(fù)合謂詞過濾性的中間N元行向量。
7. 如權(quán)利要求1或2所述的優(yōu)化方法,其中所確定該復(fù)雜謂詞的過濾性包括: 確定僅使用該復(fù)雜謂詞查詢到的數(shù)據(jù)記錄的數(shù)目; 根據(jù)所述查詢到的數(shù)據(jù)記錄的數(shù)目,計算該復(fù)雜謂詞的過濾因子。
8. 如權(quán)利要求7所述的優(yōu)化方法,其中所述對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序 包括: 根據(jù)該預(yù)定層級中的復(fù)雜謂詞之間的謂詞連接詞,基于所述過濾因子來對該預(yù)定層級 中的復(fù)雜謂詞進(jìn)行重新排序。
9. 如權(quán)利要求7所述的優(yōu)化方法,其中所述確定該復(fù)合謂詞的過濾性包括: 對于所述預(yù)定層級中未確定過濾性的每個謂詞,計算該每個謂詞的過濾因子,并且基 于該預(yù)定層級中各個謂詞的過濾因子根據(jù)以下的至少一種確定所述復(fù)合謂詞的過濾性: 在謂詞連接詞為AND的情況下,將所述預(yù)定層級中的各個謂詞的過濾因子相乘,作為 所述復(fù)合謂詞的過濾因子;在所述謂詞連接詞為OR的情況下,將所述預(yù)定層級中的各個謂 詞的過濾因子相加,作為所述復(fù)合謂詞的過濾因子。
10. -種用于關(guān)系型數(shù)據(jù)庫中的查詢語句的優(yōu)化設(shè)備,包括: 過濾性確定裝置,被配置為對于查詢語句中一預(yù)定層級中的至少兩個復(fù)雜謂詞中的每 一個,基于由僅使用該復(fù)雜謂詞對預(yù)定數(shù)據(jù)記錄進(jìn)行查詢的結(jié)果,確定該復(fù)雜謂詞的過濾 性;以及 重新排序裝置,被配置為基于所述過濾性,對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序, 以使得過濾性強(qiáng)的復(fù)雜謂詞排在過濾性弱的復(fù)雜謂詞之前。
11. 如權(quán)利要求10所述的優(yōu)化設(shè)備,其中所述過濾性確定裝置包括: 數(shù)據(jù)記錄確定單元,被配置為至少針對所述兩個復(fù)雜謂詞中的每一個,確定僅使用該 復(fù)雜謂詞查詢到的數(shù)據(jù)記錄的序號;以及 第一過濾性確定單元,被配置為至少針對所述兩個復(fù)雜謂詞中的每一個建立對應(yīng)的N 元行向量以表示該復(fù)雜謂詞的過濾性,其中N是所述預(yù)定數(shù)據(jù)記錄的數(shù)目,并且在該行向 量中,與所述查詢到的數(shù)據(jù)記錄的序號對應(yīng)位置的元素的值為1,其余位置的元素的值為 0〇
12. 如權(quán)利要求10或11所述的優(yōu)化設(shè)備,其中所述重新排序裝置包括: 元素數(shù)目確定單元,被配置為對于各個N元行向量,確定其中值為1的元素的數(shù)目; 順序調(diào)整單元,被配置為根據(jù)該預(yù)定層級中的復(fù)雜謂詞之間的謂詞連接詞,基于各個N 元行向量中值為1的元素的數(shù)目來對該預(yù)定層級中的復(fù)雜謂詞進(jìn)行重新排序。
13. 如權(quán)利要求12所述的優(yōu)化設(shè)備,其中在所述預(yù)定層級中存在至少一個簡單謂詞的 情況下,所述元素數(shù)據(jù)確定單元被配置為: 對于與所述復(fù)雜謂詞對應(yīng)的每個N元行向量,在謂詞連接詞為AND時,確定該N元行向 量中除了與所述簡單謂詞的N元行向量中值為0的元素對應(yīng)位置的元素之外,其他值為1 的元素的數(shù)目,作該為N元行向量中值為1的元素;在謂詞連接詞為OR時,確定該N元行向 量中除了與所述簡單謂詞的N元行向量中值為1的元素對應(yīng)位置的元素之外,其他值為1 的元素的數(shù)目,作該為N元行向量中值為1的元素。
14. 如權(quán)利要求10所述的優(yōu)化設(shè)備,其中所述過濾性確定裝置包括: 數(shù)據(jù)記錄確定單元,被配置為至少針對所述兩個復(fù)雜謂詞中的每一個,確定僅使用該 復(fù)雜謂詞查詢到的數(shù)據(jù)記錄的數(shù)目;以及 第一過濾性確定單元,被配置為根據(jù)所述查詢到的數(shù)據(jù)記錄的數(shù)目,計算該復(fù)雜謂詞 的過濾因子。
15. 如權(quán)利要求10或14所述的優(yōu)化設(shè)備,其中所述重新排序裝置被配置為:根據(jù)該預(yù) 定層級中的復(fù)雜謂詞之間的謂詞連接詞,基于所述過濾因子來對該預(yù)定層級中的復(fù)雜謂詞 進(jìn)行重新排序。
16. 如權(quán)利要求11所述的優(yōu)化設(shè)備,其中所述過濾性確定裝置還包括: 第二過濾性確定單元,被配置為對于由所述預(yù)定層級中的各謂詞及連接它們的謂詞連 接詞構(gòu)成的復(fù)合謂詞,確定該復(fù)合謂詞的過濾性。
17. 如權(quán)利要求16所述的優(yōu)化設(shè)備,其中所述第二過濾性確定單元配置為: 對于與所述預(yù)定層級中的各個謂詞對應(yīng)的各個N元行向量,逐個元素地執(zhí)行由所述謂 詞連接詞代表的邏輯運(yùn)算,得到用于表示所述復(fù)合謂詞的過濾性的中間N元行向量。
18. 如權(quán)利要求16所述的優(yōu)化設(shè)備,其中所述第二過濾性確定單元配置為根據(jù)以下的 至少一種確定所述復(fù)合謂詞的過濾性: 在所述預(yù)定層級中的謂詞連接詞為AND的情況下,將該預(yù)定層級中的各個謂詞的過濾 因子相乘,作為所述復(fù)合謂詞的過濾因子;在所述謂詞連接詞為OR的情況下,將該預(yù)定層 級中的各個謂詞的過濾因子相加,作為所述復(fù)合謂詞的過濾因子。
【文檔編號】G06F17/30GK104216891SQ201310210410
【公開日】2014年12月17日 申請日期:2013年5月30日 優(yōu)先權(quán)日:2013年5月30日
【發(fā)明者】楊新穎, 鄭淼, 魏可偉, 韋東杰 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1