專利名稱::使數(shù)據(jù)庫中查詢優(yōu)化的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一個(gè)數(shù)據(jù)庫的運(yùn)行性能,具體地涉及提供目錄服務(wù)時(shí)它的性能。
背景技術(shù):
:數(shù)據(jù)管理者利用電子目錄作為工具,以便把來應(yīng)用的并非相互關(guān)聯(lián)的數(shù)據(jù)集合起來,并且簡化這些數(shù)據(jù)的管理。某些電子目錄已被標(biāo)準(zhǔn)化,例如X.500或LDAP,并提供不同服務(wù)例如搜索服務(wù),用于快速地存儲和檢索信息。X.500或LDAP搜索服務(wù)使用某些參量來完成,如果可用的話,這些參量能夠標(biāo)示何處開始搜索(baseObject),搜索范圍(子集),應(yīng)用這些搜索的條件(篩選器)和應(yīng)該返回什么信息(選擇)。此外,傳遞標(biāo)志例如時(shí)間限制、規(guī)模限制等,以便標(biāo)示是否有任何別名應(yīng)該被去引用(dereference)(searchAliases)。篩選器可能是空的,可能包含單個(gè)篩選項(xiàng)或者可能是一個(gè)使用連接詞(例如AND、OR、NOT)的篩選項(xiàng)的復(fù)合表達(dá)式。這些連接詞能夠用于形成任意復(fù)雜篩選器。例如,一個(gè)用戶可能希望查詢一個(gè)目錄以便尋找一個(gè)組織中某些經(jīng)理(如果有的話)的標(biāo)題,這些經(jīng)理的工資在$60,000.00以上,具有一個(gè)被列于數(shù)據(jù)庫內(nèi)的移動電話,他們或者不在該組織的一定的辦公室內(nèi)(以“Melb”或以“Syd”開始的)。這一請求可以通過搜索查詢實(shí)現(xiàn),其中title=managerANDsalary>60000AND(mobilePhonepresentOR(NOT(locality=Melb*ORlocality=Syd*))).......表達(dá)式100以上表達(dá)式100也能表示為一個(gè)邏輯表達(dá)式A.B.(C+!(D+E)).....................................表達(dá)式101其中該篩選項(xiàng)由字符(A、B、C、D和E)表示,而連接詞則由“.”表示AND連接詞、“+”表示OR連接詞及“!”表示NOT連接詞。當(dāng)數(shù)據(jù)庫具有一個(gè)元數(shù)據(jù)設(shè)計(jì)時(shí),以上表達(dá)式101能夠被轉(zhuǎn)換為一個(gè)涉及以下形式的自聯(lián)接的SQL語句SELECTeidFROMtableWHERE(a)ANDeidIN(SELECTeidFROMtableWHERE(b))ANDeidIN(SELECTeidFROMtableWHERE(c)OReidNOTIN(SELECTeidFROMtableWHERE(d)OR(e)....................................................表達(dá)式102其中″e(cuò)id″用于表示由搜索返回的入口識別符及(a)、(b)、(c)、(d)和(e)表示每個(gè)篩選項(xiàng)的相關(guān)SQL。一般說來,至少從用戶的觀點(diǎn)看,希望對查詢操作具有相對快速的響應(yīng)。的確,在基于SQL的與關(guān)系數(shù)據(jù)庫聯(lián)合運(yùn)行的其中具有上百萬可搜索的入口的X.500或LDAP應(yīng)用中,響應(yīng)時(shí)間是重要的。用于處理一個(gè)SQL語句的時(shí)間通常隨著復(fù)雜性的增加而急劇地增加,如圖1中所示。如果SQL包括NOT連接詞,則這種效果最引人囑目。復(fù)雜性的增加也增加了一類風(fēng)險(xiǎn),即在達(dá)到時(shí)間限制或規(guī)模限制之前沒有結(jié)果返回。其結(jié)果是,這類應(yīng)用的開發(fā)者企圖避免使用相對復(fù)雜的SQL語句。包含OR連接詞的優(yōu)化項(xiàng)使用邏輯原理,例如布爾邏輯,一個(gè)任意復(fù)雜的搜索篩選器能夠展開為一些相對較簡單的各條件項(xiàng)。通常這涉及在復(fù)雜搜索篩選器中刪去‘括號’,從而得到的表達(dá)式是“AND的OR”,它也稱為“各條件項(xiàng)之和”。將一個(gè)復(fù)雜的篩選器展開,搜索也能將NOT連接詞分散以使每個(gè)NOT連接詞應(yīng)用于單個(gè)篩選項(xiàng)。在表達(dá)式103中將篩選器中的NOT連接詞展開的例子如下!(A.B)..........................................表達(dá)式103結(jié)果是以下篩選器條件項(xiàng)!A+!B..........................................表達(dá)式104其中!A是一個(gè)篩選器條件項(xiàng)及!B是另一個(gè)篩選器條件項(xiàng)。類似地,將以下表達(dá)式105的篩選器中的NOT連接詞進(jìn)行展開A.B.(C+!(D+E))..................................表達(dá)式105其結(jié)果是以下篩選器條件項(xiàng)A.B.(C+(!D.!E))................................表達(dá)式106可以通過去除括號而進(jìn)一步展開此篩選器條件項(xiàng)及所得篩選器條件項(xiàng)為以下表達(dá)式107中的A.B.C和A.B.!D.!EA.B.C+A.B.!D.!E................................表達(dá)式107以上所得表達(dá)式107顯示兩個(gè)OR在一起的篩選器條件項(xiàng)。表達(dá)式104和107中的每一個(gè)篩選器條件項(xiàng)能夠被處理,并且由應(yīng)用通過忽略重復(fù)內(nèi)容而將結(jié)果求和。這有一系列優(yōu)點(diǎn)a.較為簡單的SQL語句的生成能夠得到較快的搜索的處理時(shí)間;b.較為有效的SQL語句和加強(qiáng)的NOT連接詞處理,這將在下面描述,而在此處全部引為參考的美國申請系列號09/427,266中有更為詳細(xì)的描述。c.當(dāng)完成數(shù)據(jù)庫服務(wù)查詢時(shí),有能力施加和檢查規(guī)模限制和時(shí)間限制,這導(dǎo)致性能改進(jìn)。包含AND連接詞的優(yōu)化條件項(xiàng)在一個(gè)復(fù)雜的篩選器搜索被展開為一系列較為簡單的篩選器條件項(xiàng)之后,所得篩選器條件項(xiàng)只包含AND連接詞,但當(dāng)它們被轉(zhuǎn)換為一條SQL語句時(shí),這仍然得到相對不太有效的表達(dá)式。例如,表達(dá)式A.B............................................表達(dá)式108能夠被轉(zhuǎn)換為一條以下形式的SQL語句SELECTeidFROMtableWHERE(a)ANDeidIN(SELECTeidFROMtableWHERE(b))................語句109然而,一個(gè)篩選器條件項(xiàng)能夠包含不止一個(gè)AND連接詞,如以上表達(dá)式107所示例,而一般而言,表達(dá)式中AND連接詞愈多,則當(dāng)考慮處理響應(yīng)時(shí)間時(shí)所得SQL語句可能效率愈低。一個(gè)已知用于減少SQL語句復(fù)雜性的方法是“展平”。通過將SQL語句展平,可以減少嵌套的SQL語句。例如,語句109能夠被展平而產(chǎn)生一條以下形式的SQL語句SELECTt1.eidFROMtablet1,tablet2WHEREt1.(a)ANDt2.(b)ANDt1.eid=t2.eid.................................語句110語句110包括一系列自聯(lián)接(每個(gè)AND連接詞有一個(gè))以及允許查詢優(yōu)化器首先處理較強(qiáng)的句子,因而減少為估價(jià)該查詢所需總處理時(shí)間。涉及NOT連接詞的表達(dá)是可能得到包括一個(gè)LEFTJOIN的展平的查詢。一般處理這些聯(lián)結(jié)是費(fèi)時(shí)的,因此這類查詢的‘展平’被考慮為需要改進(jìn)的。例如,以下表達(dá)式A.!B.........................................表達(dá)式111能夠被轉(zhuǎn)換為一個(gè)以下形式的展平SQL語句SELECTt1.eidFROMtablet1LEFTJOINtablet2ONt1.eid=t2.eidANDt2.(b)WHEREt1.(a)ANDt2.NORMISNULL......................語句112如果該篩選器條件項(xiàng)涉及不止一個(gè)NOT篩選項(xiàng),例如A.!B.!C,則被展平的查詢涉及每個(gè)NOT有一個(gè)LEFTJOIN,同時(shí)NOT篩選項(xiàng)的每個(gè)組合也有一個(gè)聯(lián)合。這能夠變得非常復(fù)雜。因此認(rèn)為需要避免相對復(fù)雜的SQL語句,以便改進(jìn)服務(wù)查詢性能。
發(fā)明內(nèi)容本申請?jiān)谝粋€(gè)實(shí)施例中提供一種用于處理數(shù)據(jù)庫服務(wù)查詢的方法,其結(jié)果是改進(jìn)服務(wù)查詢性能。在此實(shí)施例中,該方法包括接收一個(gè)包括一個(gè)具有一個(gè)或多個(gè)篩選項(xiàng)的篩選器的服務(wù)查詢,將該篩選器展開以及將至少一個(gè)條件測試應(yīng)用于每個(gè)篩選項(xiàng)。測試條件的一個(gè)例子包括判斷是否每個(gè)篩選項(xiàng)包括一個(gè)NOT連接詞以及它屬于第一形式還是第二形式。第一形式可以是只有類型形式,而第二形式可以是類型和數(shù)值形式。條件測試的另一個(gè)例子包括判斷篩選項(xiàng)是否可以被預(yù)先估價(jià)為真,或者判斷篩選項(xiàng)是否可以被預(yù)先估價(jià)為假,從而可以忽略整個(gè)被展開條件項(xiàng)。本申請?jiān)诹硪粋€(gè)實(shí)施例中提供一種包括多個(gè)表格和存儲任意數(shù)據(jù)的目錄服務(wù)排列,每個(gè)表格具有多個(gè)行和列,其中至少一個(gè)表格是SEARCH表,它具有用于分解搜索服務(wù)中的篩選器的信息,具有用于展開每個(gè)篩選項(xiàng)從而得到被展開條件項(xiàng)的裝置,以及具有用于判斷一個(gè)篩選項(xiàng)的NOT是否為第一形式或第二形式中的一個(gè)的條件測試裝置。第一形式能是只有類型形式,而第二形式能是類型和數(shù)值形式。條件測試裝置可能進(jìn)一步判斷篩選項(xiàng)是否可以被預(yù)先估價(jià)為真,或者判斷篩選項(xiàng)是否可以被預(yù)先估價(jià)為假。如果該篩選項(xiàng)被確定為假,則整個(gè)被展開條件項(xiàng)可以被忽略。本申請?jiān)谝粋€(gè)選代實(shí)施例中提供一種用于處理數(shù)據(jù)庫服務(wù)查詢的方法,以便在篩選器被用于服務(wù)查詢時(shí)得到零個(gè)或多個(gè)篩選項(xiàng),并且對每個(gè)篩選項(xiàng)使用條件測試以便確定篩選項(xiàng)的一個(gè)‘形式’。優(yōu)選地,該條件測試判斷篩選項(xiàng)的形式是只有類型形式,或者該篩選項(xiàng)的形式是類型和數(shù)值形式。如果該篩選項(xiàng)是只有類型形式,則根據(jù)一種遞減方法來估價(jià)該篩選項(xiàng),例如一個(gè)ANSISQL“except”句子。優(yōu)選地,遞減方法將表達(dá)式變換以便估價(jià)該篩選項(xiàng)為一種包含較少或沒有NOT連接詞的形式。以上實(shí)施例的方法也能包括確定篩選項(xiàng)的形式是否為一種類型和數(shù)值形式,且將用以表示篩選項(xiàng)的SQL查詢語言加至準(zhǔn)備被估價(jià)的表達(dá)式中。此過程可能涉及至少一個(gè)表格聯(lián)結(jié)操作。如果該篩選項(xiàng)的形式是一種類型和數(shù)值形式的NOT,則NOT連接詞被推入篩選項(xiàng)內(nèi)。本申請的另一個(gè)實(shí)施例提供一種包括多個(gè)表格和存儲任意數(shù)據(jù)的目錄服務(wù)排列,每個(gè)表格具有多個(gè)行和列,其中至少一個(gè)表格是SEARCH表,它具有用于分解搜索服務(wù)中的篩選器的信息,以及具有用于判斷一個(gè)篩選項(xiàng)的形式是只有類型形式還是類型和數(shù)值形式的條件測試裝置。其它實(shí)施例包括一個(gè)計(jì)算機(jī)程序產(chǎn)品,它包括具有計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可用介質(zhì),以及該計(jì)算機(jī)可讀系統(tǒng)代碼被埋嵌于所述介質(zhì)上,用于對篩選器的每個(gè)篩選項(xiàng)施加條件測試,以便判斷該篩選項(xiàng)是只有類型形式還是類型和數(shù)值形式,該篩選器適用于一個(gè)目錄服務(wù)排列的搜索服務(wù)和/或一個(gè)計(jì)算機(jī)程序產(chǎn)品。在此實(shí)施例中,該計(jì)算機(jī)程序產(chǎn)品包括一個(gè)具有計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可用介質(zhì)以及被埋嵌于所述介質(zhì)上的計(jì)算機(jī)可讀系統(tǒng)代碼,用于對篩選器的每個(gè)篩選項(xiàng)施加一個(gè)條件測試,以便判斷該篩選項(xiàng)是一種只有類型形式還是一種類型和數(shù)值形式,該篩選器適用于一個(gè)目錄服務(wù)排列的搜索服務(wù)。本申請還提供一種用于處理一個(gè)數(shù)據(jù)庫服務(wù)查詢的方法,其中提供用于將一個(gè)具有篩選項(xiàng)的篩選器加以展開,預(yù)先估價(jià)各篩選項(xiàng)以及估價(jià)各篩選項(xiàng)的各步驟。一種處理數(shù)據(jù)庫服務(wù)查詢的方法包括將一個(gè)篩選器應(yīng)用于服務(wù)查詢,從而得到多個(gè)篩選項(xiàng),及包括在處理相對大的項(xiàng)之前處理相對小的項(xiàng)。定義除業(yè)內(nèi)人員了解之外,以下條件項(xiàng)和句子還包括條件項(xiàng)‘篩選器’系指一個(gè)表達(dá)式,用于表示施加于目錄搜索上的條件。篩選器的一個(gè)例子是以上表達(dá)式103中提供的!(A.B);句子‘被展開條件項(xiàng)’或‘篩選器條件項(xiàng)’系指一個(gè)被展開的‘篩選器’的一個(gè)或多個(gè)組分。被展開條件項(xiàng)的例子包括以上表達(dá)式107中提供的A.B.C或A.B.!D.!E;及句子‘篩選項(xiàng)’系指或者一個(gè)‘篩選器’或者一個(gè)‘篩選器條件項(xiàng)’的一個(gè)組分的一部分,或者系指一個(gè)表達(dá)式,例如(X+Y)。篩選項(xiàng)的例子包括表達(dá)式103的組分A或B或者表達(dá)式107的組分A,B,C,!D或!E或者一個(gè)表達(dá)式例如(X+Y)。應(yīng)該注意到,整個(gè)說明書中所用組分A,B,C,D,E或其他標(biāo)注、組分或數(shù)字都是用于表示目錄服務(wù)和/或目錄服務(wù)查詢(例如表達(dá)式100中所表示的查詢)。現(xiàn)參照附圖描述本發(fā)明的優(yōu)選實(shí)施例,附圖中圖1是用于闡述SQL語句的處理時(shí)間和復(fù)雜性的關(guān)系的圖;圖2是根據(jù)本申請的方法的一部分的操作流程的原理表示圖;圖3是數(shù)據(jù)庫中各入口的示意圖;圖4是數(shù)據(jù)的第一形式集合的示意圖;圖5是數(shù)據(jù)的第二形式集合的示意圖;圖6是根據(jù)本申請一個(gè)實(shí)施例的SQL查詢的一種形式所用SQL查詢緩存的示例性框圖;圖7是根據(jù)本申請的一個(gè)方法的一部分的一個(gè)選代操作流程圖;圖8是根據(jù)本申請的一個(gè)方法的一部分的一個(gè)選代操作流程圖;及圖9是根據(jù)本申請的一個(gè)方法的一部分的一個(gè)選代操作流程圖。具體實(shí)施例方式包含NOT連接詞的優(yōu)化條件項(xiàng)根據(jù)本申請的各方法已經(jīng)發(fā)現(xiàn)有兩種類型的篩選器條件項(xiàng)或篩選項(xiàng)1)只有(現(xiàn)有)類型篩選項(xiàng),及2)類型和數(shù)值篩選項(xiàng)。應(yīng)該注意到,以下描述的不同實(shí)施例可能描述只有類型篩選項(xiàng)或類型和數(shù)值篩選項(xiàng)。應(yīng)該理解,篩選器條件項(xiàng)可以用于替代篩選項(xiàng)或者篩選項(xiàng)的組合,以及可以使用根據(jù)本申請的方法實(shí)現(xiàn)各篩選器條件項(xiàng)。只有類型篩選項(xiàng)包括一個(gè)“present”運(yùn)算符,例如“surnamepresent”。類型和數(shù)值篩選項(xiàng)包括一個(gè)屬性、一個(gè)運(yùn)算符和一個(gè)數(shù)值,例如“surname=HARVEY”。要求有數(shù)值的運(yùn)算符包括=、>=、<=和子串。圖2以相對簡單的形式闡述根據(jù)本申請的一個(gè)實(shí)施例的操作流。一個(gè)目錄服務(wù)查詢能夠被展開為一系列篩選器條件項(xiàng),它們之中的任何一個(gè)都可能具有不同程度的復(fù)雜性。根據(jù)本申請的方法涉及一個(gè)判斷操作,對篩選器條件項(xiàng)中的每個(gè)篩選項(xiàng)判斷該篩選項(xiàng)是只有類型的還是類型和數(shù)值的篩選項(xiàng),以及如果該篩選項(xiàng)是否由一個(gè)NOT連接詞進(jìn)行操作。對一個(gè)篩選項(xiàng)是只有類型的還是類型和數(shù)值的篩選項(xiàng)的判斷操作此處也被稱為條件測試。如果該具有NOT連接詞的篩選項(xiàng)是一個(gè)只有類型篩選項(xiàng),則可以利用一個(gè)邏輯方法學(xué)來估價(jià)或處理該篩選項(xiàng)而在SQL中避免NOT。該邏輯方法學(xué)可以是一個(gè)在以下表達(dá)式117中表達(dá)的遞減方法或者任何其它能夠展開一個(gè)表達(dá)式以使該篩選項(xiàng)不包含NOT連接詞的合適的方法學(xué)。如果該具有NOT連接詞的篩選項(xiàng)是一個(gè)類型和數(shù)值的篩選項(xiàng),則本申請將NOT連接詞推入該篩選項(xiàng)以便在外層的SQL中避免NOT。只要所應(yīng)用的遞減方法考慮到由NOT連接詞所操作的屬性(類型)包括一個(gè)對現(xiàn)有屬性的測試,就可以使用該遞減方法。下面將參照圖5更詳細(xì)地進(jìn)行描述。雖然我們引用以上的進(jìn)一步估價(jià)或處理操作,但應(yīng)該理解,本申請的方法學(xué)對每個(gè)具有NOT連接詞的篩選項(xiàng)都應(yīng)用‘條件測試’。與NOT處理相關(guān)的一個(gè)考慮是沒有規(guī)定將一個(gè)類型和數(shù)值的篩選項(xiàng)應(yīng)用于一個(gè)不包含該屬性(類型)的入口。為更好地理解此考慮,下面將詳細(xì)地給出一系列例子。參照圖3,數(shù)據(jù)庫中提供入口E1、E2和E3,它們中的每一個(gè)都包含可搜索的信息,并且分別由參考數(shù)字10、11和12所表示。一個(gè)希望在存有入口E1、E2和E3的數(shù)據(jù)庫中搜索信息的用戶可以利用一個(gè)或多個(gè)篩選器以便檢索所需信息。例如,一個(gè)搜索S1可以包括一個(gè)具有篩選項(xiàng)B1的篩選器,以便對入口E1、E2和E3進(jìn)行搜索,搜索那些具有以Rick開始的公共名稱的入口(cn=rick*,其中*表示任何其他標(biāo)注)。此搜索S1的結(jié)果是入口E1和E2被識別,因?yàn)檫@些入口中cn=rick或ricky。另一個(gè)搜索S2可以包括一個(gè)具有篩選項(xiàng)!B1的篩選器,以便對入口E1、E2和E3進(jìn)行搜索,搜索NOTB1(NOT(cn=rick*))。此搜索S2的結(jié)果是入口E3被識別,因?yàn)镋3是唯一的包含沒有以rick*開始的數(shù)值的公共名稱的入口。使用此搜索處理以上考慮,因?yàn)樗腥肟诙及粋€(gè)公共名稱。此外,S1是S2的逆搜索,它們考慮到所有入口,因此這些搜索能夠稱為只有類型篩選項(xiàng)的各逆搜索,它們能夠表達(dá)如下B1+!B1=1.......................................表達(dá)式113再次參照圖3,在另一個(gè)例子中,一個(gè)搜索S3可以包括一個(gè)具有篩選項(xiàng)B2的篩選器,以便對入口E1、E2和E3進(jìn)行搜索,搜索鞋子尺寸大于5的入口(shoesize>5)。此搜索的結(jié)果是入口E1被識別,因?yàn)镋1是唯一的規(guī)定鞋子尺寸及鞋子尺寸大于5的入口。另一個(gè)搜索S4包括一個(gè)具有篩選項(xiàng)!B2的篩選器,以便對入口E1、E2和E3搜索NOTB2(NOTshoesizegreaterthan5)。此搜索的結(jié)果是沒有匹配的入口被識別,因?yàn)榇撕Y選項(xiàng)只能對入口E1給出一個(gè)可確定的結(jié)果。不規(guī)定對入口E2和E3應(yīng)用該篩選器,因?yàn)檫@些入口沒有一個(gè)鞋子尺寸的屬性。因?yàn)榫哂泻Y選項(xiàng)!B2的搜索S4的結(jié)果不包括那些‘不規(guī)定’的篩選器的應(yīng)用的入口,因此搜索操作S3和S4彼此不是逆項(xiàng),也不覆蓋所有可能的入口,因此能夠表達(dá)如下B2+!B21.....................................表達(dá)式114從此可以看出,這些篩選項(xiàng)是類型和數(shù)值篩選項(xiàng)。對于只有類型篩選器而言,并不復(fù)雜,因?yàn)槿鐖D2中所闡述的,對“present”的測試是二進(jìn)制的。例如,一個(gè)包括一個(gè)具有篩選項(xiàng)B3“shoesizepresent”的篩選器的搜索S5的結(jié)果是入口E1被識別,因?yàn)镋1是唯一的具有鞋子尺寸屬性的入口。另一個(gè)包括一個(gè)具有篩選項(xiàng)!B3“NOTshoesizepresent”的篩選器的搜索S6的結(jié)果是入口E2和E3被識別,因?yàn)椤畁ot’搜索是可規(guī)定的,即那些不具有屬性的入口能提供一個(gè)確定結(jié)果。根據(jù)這點(diǎn),搜索S5和S6能夠被稱為只有類型篩選項(xiàng)的逆搜索并且能夠表達(dá)如下B3+!B3=1...................................表達(dá)式115識別具有NOT連接詞的只有類型篩選項(xiàng)對于只有類型篩選項(xiàng)的搜索,有一個(gè)二進(jìn)制邏輯,對于每一個(gè)應(yīng)用篩選項(xiàng)的入口,其結(jié)果將是真或假?,F(xiàn)在參照圖4,矩形13內(nèi)的面積顯示一個(gè)目錄中的入口的總數(shù),而圓A和B則顯示滿足應(yīng)用示例性篩選器A和B的搜索的入口。如果篩選項(xiàng)B是一個(gè)只有類型篩選項(xiàng),則兩圓相交部分的左側(cè)面積14顯示滿足具有篩選器條件項(xiàng)A.!B的搜索的各入口。具有NOT連接詞的只有類型篩選器的估價(jià)本申請能夠使用一種邏輯方法學(xué)估價(jià)或處理只有類型篩選器條件項(xiàng)或具有NOT連接詞的篩選項(xiàng),該邏輯方法學(xué)將一個(gè)表達(dá)式展開以使篩選器條件項(xiàng)或篩選項(xiàng)不包含NOT連接詞。該邏輯方法學(xué)可以是遞減方法或任何其他合適的能夠?qū)⒁粋€(gè)表達(dá)式展開為不包含NOT連接詞的篩選項(xiàng)的方法學(xué)。為便于討論,將使用遞減方法描述本申請。能夠由數(shù)據(jù)庫使用一個(gè)ANSISQL“except”句子完成或由其它合適的方法完成該遞減方法。選代地,一個(gè)篩選器或篩選器條件項(xiàng)能夠被展開以及一個(gè)目錄應(yīng)用能夠在篩選器或篩選器條件項(xiàng)上完成遞減方法以便去除NOT連接詞。此選代的方法將包含NOT連接詞的篩選器或篩選器條件項(xiàng)分解為兩個(gè)(或更多)不包含NOT連接詞的較小篩選器條件項(xiàng)。例如,一個(gè)其形式為A.!B.......................................表達(dá)式116的篩選器條件項(xiàng)能夠表達(dá)為A.(1-B)=>A-A.B............................表達(dá)式117其中“A”和“A.B”是較小篩選器條件項(xiàng)。對這些篩選器條件項(xiàng)的處理涉及在一個(gè)數(shù)據(jù)庫目錄中尋找滿足篩選項(xiàng)“A”的各入口的入口識別符(EID)并且將它們存入存儲器內(nèi)。滿足篩選器條件項(xiàng)“A.B”的各入口的EID被找到并且從篩選器條件項(xiàng)A的所存EID中減去以便產(chǎn)生滿足原始篩選器或者篩選器條件項(xiàng)A.!B的EID。此外,可以首先處理被認(rèn)為相對較小的篩選器條件項(xiàng)或篩選項(xiàng)。因此,當(dāng)來自圖4的篩選器條件項(xiàng)A.B被處理時(shí),將返回較少入口,以便首先完成此篩選器條件項(xiàng)A.B以便建立例如一個(gè)“排除表”。然后能夠處理篩選器條件項(xiàng)A,以及不在該“排除表”內(nèi)的入口能夠被列為搜索的結(jié)果。識別具有NOT連接詞的類型和數(shù)值篩選項(xiàng)本申請能夠使用一個(gè)邏輯方法學(xué)估價(jià)或處理具有NOT連接詞的類型和數(shù)值篩選器條件項(xiàng)或篩選項(xiàng)。如上所指出的,認(rèn)為這類篩選項(xiàng)可能比只有類型篩選項(xiàng)更為復(fù)雜,因?yàn)檫@類篩選項(xiàng)可能對某些入口產(chǎn)生無定義的結(jié)果。當(dāng)處理類型和數(shù)值篩選項(xiàng)時(shí),對每個(gè)入口的篩選項(xiàng)的估價(jià)可能產(chǎn)生三種結(jié)果1)存在一個(gè)屬性及該數(shù)值與篩選項(xiàng)匹配;2)存在一個(gè)屬性及該數(shù)值與篩選項(xiàng)不匹配;及3)不存在屬性以致對該具體入口應(yīng)用篩選項(xiàng)的結(jié)果無定義。在圖5中,矩形13中的面積顯示目錄中入口的總數(shù)。內(nèi)圓15顯示滿足篩選項(xiàng)B的入口,而外圓16顯示滿足篩選項(xiàng)B*的入口(其中B*=Bpresent)?,F(xiàn)在可以看出,篩選器條件項(xiàng)A.!B..........................................表達(dá)式118對于篩選項(xiàng)A的交叉陰影面積17中的入口是無定義的,因?yàn)楹Y選項(xiàng)B在這些入口中不存在。這相對于圖3和以上的搜索S4而言是一個(gè)類似的情況,其中對某些入口的結(jié)果是‘無定義’的。由表達(dá)式118的搜索篩選器所返回的入口將是由從篩選項(xiàng)A和B*相交的面積中扣除篩選項(xiàng)A和B相交面積后所得彎月形面積18所表示的入口。具有NOT連接詞的類型和數(shù)值篩選項(xiàng)的估價(jià)也能使用一個(gè)邏輯方法估價(jià)類型和數(shù)值篩選項(xiàng)中具有NOT連接詞的部分。該邏輯方法學(xué)可以是一個(gè)在以下表達(dá)式120中表達(dá)的遞減方法或者任何其它能夠展開一個(gè)表達(dá)式以使該篩選項(xiàng)不包含NOT連接詞的合適的方法學(xué)。在以下的表達(dá)式中篩選項(xiàng)A.!B包括一個(gè)類型和數(shù)值篩選項(xiàng)!BA.!B.......................................表達(dá)式119此篩選器條件項(xiàng)能夠進(jìn)一步展開為A.(B*-B)=>A.B*-A.B...........................表達(dá)式120其中B*代表Bpresent,并用于將具有無定義的篩選項(xiàng)的入口去除。在表達(dá)式119的篩選器條件項(xiàng)中,篩選項(xiàng)(!B)是一個(gè)類型和數(shù)值篩選項(xiàng),由此B+!B1.....................................表達(dá)式121這相對地類似于表達(dá)式114。如果表達(dá)式120中的篩選器條件項(xiàng)A是弱的(對許多入口都是真的)或者B是公共的(這存在于許多入口中),則表達(dá)式117中所表達(dá)的遞減方法可能不是有效的,因?yàn)樗媒Y(jié)果是涉及一個(gè)弱條件項(xiàng)的聯(lián)合表達(dá)式。如果在一個(gè)篩選器條件項(xiàng)中篩選項(xiàng)的NOT連接詞多于一個(gè),例如A.!B.!C,則該遞減方法將需要估價(jià)A.B*.C*-A.B-A.C。在此情況下,聯(lián)合運(yùn)算符的數(shù)量會使篩選器條件項(xiàng)組分中的一個(gè)變?nèi)醯臋C(jī)會增加,其結(jié)果可能使所考慮的搜索性能比優(yōu)化性能差。還有一個(gè)用于估價(jià)具有NOT連接詞的類型和數(shù)值篩選器的選代實(shí)施例,在某些情況下它可能比使用遞減方法更為有效。在此實(shí)施例中,當(dāng)處理篩選項(xiàng)時(shí)使用逆運(yùn)算符。為便于闡述,可以在元數(shù)據(jù)設(shè)計(jì)中,在用于代表篩選器條件項(xiàng)的SQL語句中包括篩選器條件項(xiàng)的屬性和數(shù)值。使用此方法學(xué)時(shí),來自一個(gè)類型和數(shù)值篩選項(xiàng)的無定義結(jié)果能夠被自動地訪問,因?yàn)閿?shù)據(jù)庫中的搜索表布局能通過它們的屬性識別符(AID)和數(shù)值(NORMKEY和NORM)識別各行。其結(jié)果是,篩選項(xiàng)能夠表達(dá)如下type,operator,value...........................表達(dá)式122或如有一個(gè)NOT連接詞應(yīng)用于該篩選項(xiàng),則該篩選項(xiàng)能夠表達(dá)如下NOT(type,operator,value)......................表達(dá)式123然而,該NOT連接詞能夠被‘推’入篩選項(xiàng)內(nèi)并如下所述地應(yīng)用于運(yùn)算符type,NOT(operator),value......................表達(dá)式124當(dāng)‘推’一個(gè)NOT連接詞進(jìn)入一個(gè)篩選項(xiàng)時(shí),運(yùn)算符可以被逆轉(zhuǎn)。這允許一個(gè)篩選項(xiàng)的NOT連接詞從一個(gè)負(fù)語句(例如尋找不包含工資大于60000的所有入口)轉(zhuǎn)換為一個(gè)正語句(例如尋找包含其數(shù)值小于或等于60000的工資屬性的所有入口)。例如一個(gè)篩選項(xiàng)salary>60000...................................表達(dá)式125能夠被表達(dá)于一個(gè)SQLWHERE句子中,即AID=7ANDNORM>60000..........................語句126類似地,一個(gè)包含NOT連接詞的篩選項(xiàng)能夠表達(dá)如下NOT(salary>60000)..............................表達(dá)式127以及能夠被表達(dá)于一個(gè)SQLWHERE句子中,即AID=7ANDNORM<=60000........................語句128注意到篩選項(xiàng)中的“>”運(yùn)算符已經(jīng)被轉(zhuǎn)換為SQL語句中的“<=”運(yùn)算符。使用以上篩選項(xiàng),任何不具有工資屬性的入口將不滿足篩選項(xiàng)“AID=7”,所以在將該篩選項(xiàng)應(yīng)用于這些入口時(shí)將不會復(fù)雜。類似地,篩選項(xiàng)NOT(surnamelikeMOR*)..........................表達(dá)式129能夠被表達(dá)于一個(gè)SQLWHERE句子中,即AID=4和NORMNOTLIKEMOR%.....................語句130圖6原理地闡述一個(gè)在執(zhí)行用于估價(jià)具有NOT連接詞的類型和數(shù)值篩選項(xiàng)的選代方法之前建立SQL查詢的方法。在此實(shí)施例中,提供正SQL查詢緩存601和負(fù)SQL查詢緩存602n。負(fù)查詢緩存作為單獨(dú)的塊加以闡述,因?yàn)樗鼈兺ǔ1籓R運(yùn)算符隔開。正查詢緩存601能夠被提供給篩選項(xiàng)和/或由正SQL查詢所代表的結(jié)果。許多或所有正SQL查詢能夠被包含于正SQL查詢緩存601內(nèi)。具有NOT連接詞的類型和數(shù)值篩選項(xiàng)位于正SQL查詢緩存內(nèi)。負(fù)SQL查詢緩存602至n用于存儲在處理具有NOT連接詞的篩選項(xiàng)中所得遞減SQL查詢中的每一個(gè)。在此實(shí)施例中,處理NOT連接詞以便將NOT連接詞推下至可能的較低水平,從而在運(yùn)行每一個(gè)查詢時(shí)每個(gè)NOT連接詞應(yīng)用于單個(gè)比較操作。此后能夠使用邏輯方法學(xué)(例如此處以上所描述的遞減方法)處理那些包含一個(gè)“attributepresent”的具有NOT連接詞的只有類型篩選項(xiàng),以及能夠通過將運(yùn)算符逆轉(zhuǎn)和包括一個(gè)屬性識別符組分(AID=<value>)以便使篩選項(xiàng)成為正篩選項(xiàng)而處理具有NOT連接詞的類型和數(shù)值篩選項(xiàng)。這樣做意味著該‘運(yùn)算符’變換為它的互補(bǔ)運(yùn)算符,以使例如一個(gè)‘>=’運(yùn)算符變?yōu)橐粋€(gè)‘<’運(yùn)算符,一個(gè)‘<=’運(yùn)算符變?yōu)橐粋€(gè)‘>’運(yùn)算符,一個(gè)子串變?yōu)橐粋€(gè)NOT子串,以及一個(gè)‘=’運(yùn)算符變?yōu)橐粋€(gè)‘?。健颉迹尽\(yùn)算符。業(yè)內(nèi)人員熟知其它存在的運(yùn)算符,因此前面的例子只用做導(dǎo)引。圖7闡述根據(jù)本申請的方法的又一個(gè)實(shí)施例。在此實(shí)施例中,一個(gè)目錄服務(wù)查詢(步驟701)被啟動以便在執(zhí)行查詢時(shí)應(yīng)用一個(gè)篩選器,其結(jié)果是得到一系列篩選器條件項(xiàng)或項(xiàng)701(1至n),所有這些可能具有不同程度的復(fù)雜性。然后對這些篩選項(xiàng)施加一個(gè)測試條件(步驟703)。也即,判斷每個(gè)篩選器條件項(xiàng)或篩選項(xiàng)是只有類型還是類型和數(shù)值篩選器條件項(xiàng)或篩選項(xiàng)。如果發(fā)現(xiàn)該篩選項(xiàng)是只有類型的(路徑704),即任意為B=B*,其中B*意味著B存在,然后使用一個(gè)以下詳述的遞減方法將SQL加至負(fù)SQL查詢緩存中。如果發(fā)現(xiàn)該篩選項(xiàng)是類型和數(shù)值的(路徑706),即任意為B?。紹*,然后將SQL加至正SQL查詢緩存中,這可能涉及一個(gè)表聯(lián)結(jié)(路徑707)。更優(yōu)選地,NOT連接詞被推入篩選項(xiàng)中(路徑708)。然后判斷SQL的建立是否已完成或該篩選項(xiàng)是否已經(jīng)被展開(步驟710)。如果對步驟710的回答是‘否’,則對下一個(gè)篩選項(xiàng)應(yīng)用測試條件(步驟703)。如果對步驟710的回答是‘是’,則能夠進(jìn)行進(jìn)一步的處理(步驟705)。根據(jù)本申請,也有可能通過路徑707處理一個(gè)或多個(gè)篩選項(xiàng)及/或通過路徑708處理一個(gè)或多個(gè)篩選項(xiàng)。不涉及NOT聯(lián)接詞的篩選項(xiàng)能夠跟隨路徑707,將SQL加至正SQL查詢緩存中。圖8闡述根據(jù)本申請的方法的又一個(gè)實(shí)施例。圖8所闡述的方法實(shí)施例中有三個(gè)處理步驟被完成,即展開、預(yù)估價(jià)和估價(jià)。啟動一個(gè)目錄服務(wù)查詢(步驟801)以便應(yīng)用一個(gè)具有復(fù)雜篩選器條件項(xiàng)的篩選器(步驟802)。然后將該具有復(fù)雜篩選器條件項(xiàng)的篩選器進(jìn)行展開(步驟803)。接著判斷是否可能和/或希望進(jìn)一步將該被展開條件項(xiàng)進(jìn)一步展開。一個(gè)方法是查看步驟803展開中所得的被展開條件項(xiàng)是否包括任何帶括號的條件項(xiàng)。如果它的確包括一個(gè)或多個(gè)帶括號的條件項(xiàng),則被展開條件項(xiàng)再一次被展開(步驟803、804)。如果被展開條件項(xiàng)不包括一個(gè)或多個(gè)帶括號的條件項(xiàng),則被展開條件項(xiàng)的現(xiàn)有展開被認(rèn)為是足夠的或已完成的,以及由展開所得的可能具有不同程度復(fù)雜性的篩選項(xiàng)形成被展開條件項(xiàng)的總和(步驟806)。具有一組被展開條件項(xiàng)后,能夠完成下一步即預(yù)估價(jià)。此預(yù)估價(jià)過程主要進(jìn)行查看,以便不再需要估價(jià)那些已經(jīng)知道結(jié)果的條件項(xiàng)。例如,如果已知一個(gè)篩選項(xiàng)包含一個(gè)不存在于數(shù)據(jù)庫中的屬性,則我們考慮該結(jié)果早已被知道為真或假。在步驟807中取出每個(gè)被展開條件項(xiàng),識別每個(gè)篩選項(xiàng)(步驟808),對來自步驟808的每個(gè)篩選項(xiàng)和/或來自步驟807的被展開條件項(xiàng)進(jìn)行測試,查看那些篩選項(xiàng)和/或被展開條件項(xiàng)是否早已知道(步驟809)。如果該結(jié)果已知,則跟隨路徑810,及再一次測試已知篩選項(xiàng)或被展開條件項(xiàng)以便判斷該結(jié)果是真還是假(步驟811)。如果篩選項(xiàng)的結(jié)果是假,則結(jié)束估價(jià)(步驟812)。如果篩選項(xiàng)的結(jié)果是真,則跟隨路徑813,并去除已知的和真的篩選項(xiàng)(步驟814)。然后跟隨路徑815。為了闡述,在表達(dá)式A.B.!C.............................................表達(dá)式131中如果已知篩選項(xiàng)B=0,例如該處理尋找一個(gè)空串,則表達(dá)式131將估價(jià)為零(即該結(jié)果已知為假),及能夠跟隨路徑812,而該篩選項(xiàng)或被展開條件項(xiàng)的處理就結(jié)束。該處理能夠繼續(xù)以處理其它被展開條件項(xiàng)或篩選項(xiàng)。如已知篩選項(xiàng)B=1,例如對象類存在,則表達(dá)式131將估價(jià)為A.!C..................................................表達(dá)式132(即已知該結(jié)果為真),因此該處理能夠去除圖8步驟814中的篩選項(xiàng)‘B’。已知篩選項(xiàng)C是無定義的,例如C尋找大于具體數(shù)值的鞋子尺寸的情況,但在數(shù)據(jù)庫中沒有鞋子尺寸屬性,則篩選項(xiàng)!C也無定義。在此情況下,被展開表達(dá)式132將估價(jià)為零(即該結(jié)果已知為假)并能夠跟隨路徑812,及為該篩選項(xiàng)或被展開條件項(xiàng)結(jié)束該處理。如果在步驟809中不知該篩選項(xiàng)和/或被展開條件項(xiàng),則跟隨路徑816,及進(jìn)一步判斷是否還需要進(jìn)行預(yù)估價(jià)(步驟817)。如果判定需要進(jìn)一步預(yù)估價(jià),則跟隨路徑819至步驟808,從而重復(fù)以上所描述的處理。如果不再有已知篩選項(xiàng)和/或被展開條件項(xiàng),則跟隨路徑818,及重新排列余下的篩選項(xiàng),以便將正篩選項(xiàng)和負(fù)篩選項(xiàng)組合起來(步驟820)。此外,將正篩選項(xiàng)和負(fù)篩選項(xiàng)單獨(dú)地組合是優(yōu)選的,因?yàn)槟軌虻玫揭唤M被展開的min-term(步驟821)。為了闡述,能夠?qū)⒑Y選項(xiàng)A.!B.C.!D.............................................表達(dá)式133重新排列以便獲得一組被展開min-termA.C.!B.!D.............................................表達(dá)式134如果不需要進(jìn)一步進(jìn)行預(yù)估價(jià),則進(jìn)行本申請下一步,即估價(jià)操作。將重新排列的分組中的每一個(gè)篩選項(xiàng)進(jìn)行測試以便判斷該篩選項(xiàng)是否包括一個(gè)或多個(gè)NOT聯(lián)接詞(步驟822和823)。如果被測試篩選項(xiàng)不包括NOT連接詞,則跟隨路徑824,并將等于該篩選項(xiàng)的SQL加至一個(gè)正SQL查詢緩存(類似于圖6的緩存601)(步驟825)。在將SQL加至緩存之后,判斷是否還有任何其他篩選項(xiàng)有待估價(jià)(步驟827)。如果在步驟823中篩選項(xiàng)不包括一個(gè)或多個(gè)NOT連接詞,則跟隨路徑828,并完成一個(gè)類似于圖2中描述的測試條件(步驟829)。測試操作判斷該篩選項(xiàng)是一個(gè)只有類型篩選項(xiàng)還是一個(gè)類型和數(shù)值篩選項(xiàng)。如果該篩選項(xiàng)被判斷為類型和數(shù)值(路徑831),則NOT連接詞被‘推’入運(yùn)算符中,及等于此NOT條件項(xiàng)的SQL被加至正SQL查詢緩存中(步驟832)。在SQL被加至緩存中之后,判斷是否尚有任何其他篩選項(xiàng)要估價(jià)(步驟827)。如果在步驟829中該篩選項(xiàng)是只有類型篩選項(xiàng),則利用遞減方法來估價(jià)該篩選項(xiàng),及將等于該篩選項(xiàng)的SQL加至一個(gè)負(fù)SQL查詢緩存中(類似于圖6中的緩存602、603、60n)(步驟833)。在SQL被加至緩存之后,判斷是否還有任何其他篩選項(xiàng)有待估價(jià)(步驟827)。在步驟827中如果還有篩選項(xiàng)有待估價(jià),則跟隨路徑834并且從步驟822開始重復(fù)該過程。如果沒有其他篩選項(xiàng)需要估價(jià)(步驟835),則執(zhí)行SQL(步驟836)及估價(jià)該篩選器條件項(xiàng)(步驟837)??捎胁煌椒ㄍ瓿刹襟E836的執(zhí)行。一個(gè)方法是使用ANSI‘SQLEXCEPT’連接詞同時(shí)估價(jià)負(fù)的和正的SQL子表達(dá)式。另一個(gè)方法是分別地估價(jià)負(fù)的和正的SQL表達(dá)式,并由應(yīng)用自己進(jìn)行遞減操作。還有一個(gè)方法涉及將負(fù)SQL用OR連接詞隔開后放入緩存中,對每個(gè)負(fù)緩存進(jìn)行估價(jià)和將結(jié)果放入一個(gè)‘扣除表’中。這提供一系列較小SQL表達(dá)式以供估價(jià)。然后能夠估價(jià)正SQL,如果它們不在‘扣除表’表中,則將它們放在‘結(jié)果表’中。這允許在收集正結(jié)果時(shí)進(jìn)行遞減操作。圖9是根據(jù)本申請的另一個(gè)選代實(shí)施例的流程圖。啟動一個(gè)目錄服務(wù)查詢,應(yīng)用一個(gè)篩選器并獲得一個(gè)被展開條件項(xiàng)(步驟901、902)。對每個(gè)篩選項(xiàng)903完成一個(gè)測試904以便判斷該篩選項(xiàng)的結(jié)果是否早已知道。雖然此實(shí)施例涉及篩選項(xiàng),但也同樣能夠應(yīng)用于被展開條件項(xiàng),如果結(jié)果已知,則跟隨路徑905,并再一次測試已知篩選項(xiàng)以便判斷已知篩選項(xiàng)903是真還是假(步驟906)。如果已知篩選項(xiàng)是假,則刪除該篩選器條件項(xiàng)(步驟907)并結(jié)束該篩選器條件項(xiàng)的估價(jià)過程(步驟908)。如果已知篩選項(xiàng)903是真,則跟隨路徑909,然后完成一個(gè)測試以便判斷是否有更多篩選項(xiàng)需要處理(步驟910)。如果在步驟904中該篩選項(xiàng)是未知的,則跟隨路徑911,并進(jìn)行測試以便判斷該篩選項(xiàng)是否包括一個(gè)NOT連接詞(步驟912)。如果該篩選項(xiàng)不包括一個(gè)NOT連接詞,則跟隨路徑913,并將等于該篩選項(xiàng)的SQL加至一個(gè)正SQL查詢緩存(類似于圖6的緩存601)(步驟914)。在將該SQL加至緩存之后,進(jìn)行一個(gè)測試以便判斷是否有更多篩選項(xiàng)需要處理(步驟910)。如果在步驟912中該篩選項(xiàng)的確包括一個(gè)NOT連接詞,則跟隨路徑916,并進(jìn)行一個(gè)類似于圖2中描述的測試條件(步驟917)。該測試操作判斷該篩選項(xiàng)是一個(gè)只有類型篩選項(xiàng)還是一個(gè)類型和數(shù)據(jù)篩選項(xiàng)。如果該篩選項(xiàng)是一個(gè)類型和數(shù)值篩選項(xiàng),則該NOT連接詞被‘推’入SQL,及將等于此NOT連接詞的SQL加至正SQL查詢緩存中(類似于圖6的緩存601)(步驟920)。在SQL被加至緩存中之后,進(jìn)行一個(gè)測試以便判斷是否有更多篩選項(xiàng)需要處理(步驟910)。如果在步驟917中該篩選項(xiàng)是一個(gè)只有類型篩選項(xiàng),則將等于該篩選項(xiàng)的SQL加至一個(gè)負(fù)SQL查詢緩存(類似于圖6中的緩存602、603、60n)(步驟921)。在SQL被加至緩存之后,完成一個(gè)測試以便判斷是否有更多篩選項(xiàng)需要處理(步驟910)。如上所述,在步驟910中該測試操作判斷是否還有篩選項(xiàng)需要估價(jià)。如果需要進(jìn)一步估價(jià),則跟隨路徑922并從步驟903開始重復(fù)該過程。如果不再有任何項(xiàng)需要估價(jià),則優(yōu)選地以類似于圖8中步驟836的方式執(zhí)行SQL(步驟924),并給出一個(gè)結(jié)果(步驟925)。總之,基本上,本申請已經(jīng)實(shí)現(xiàn)的是目錄服務(wù)的各條件項(xiàng)包含(潛在地)兩種不同類型的篩選項(xiàng)。因此本申請確定篩選項(xiàng)的每種類型,例如對于類型和數(shù)值項(xiàng),根據(jù)表達(dá)式117、120或124及/或此說明書中所描述的實(shí)施例來分別選擇合適的估價(jià),并且以此方式確定一種優(yōu)化的或改進(jìn)的目錄服務(wù)的處理過程。應(yīng)該注意到,本申請不應(yīng)只限于所描述的這些實(shí)施例。業(yè)內(nèi)人員能理解,本申請能夠被實(shí)施于相當(dāng)多的不同變動情況。權(quán)利要求1.一種處理數(shù)據(jù)庫服務(wù)查詢的方法,包括接收一個(gè)包括一個(gè)具有一個(gè)或多個(gè)篩選項(xiàng)的篩選器的服務(wù)查詢;展開該篩選器;及對每個(gè)篩選項(xiàng)應(yīng)用一個(gè)條件測試以便判斷該篩選項(xiàng)是否包括一個(gè)NOT連接詞以及該篩選項(xiàng)是否為兩種類型篩選項(xiàng)中的一種。2.如權(quán)利要求1所述的方法,其中兩種類型篩選項(xiàng)包括一種只有類型篩選項(xiàng)和一種類型和數(shù)值篩選項(xiàng)。3.如權(quán)利要求2所述的方法,其中一個(gè)邏輯方法學(xué)被應(yīng)用于估價(jià)與只有類型篩選項(xiàng)相關(guān)聯(lián)的NOT連接詞。4.如權(quán)利要求3所述的方法,其中該邏輯方法學(xué)包括一個(gè)遞減方法。5.如權(quán)利要求2所述的方法,其中一個(gè)與一個(gè)類型和數(shù)據(jù)篩選項(xiàng)相關(guān)聯(lián)的NOT連接詞被推入該篩選項(xiàng)內(nèi),結(jié)果是改變該篩選項(xiàng)內(nèi)的一個(gè)運(yùn)算符。6.如權(quán)利要求1所述的方法,其中該條件測試還包括判斷是否每個(gè)篩選項(xiàng)能夠被預(yù)估價(jià)為真。7.如權(quán)利要求1所述的方法,其中該條件測試還包括判斷是否每個(gè)篩選項(xiàng)能夠被預(yù)估價(jià)為假,以便忽略該被展開條件項(xiàng)。8.如權(quán)利要求1所述的方法,其中該篩選器被展開為條件項(xiàng)的最小集。9.一種目錄服務(wù)排列,包括多個(gè)表,每個(gè)表具有多行和多列,用于存儲一個(gè)搜索服務(wù)中的任意數(shù)據(jù),其中這些表中的至少一個(gè)具有用于分解具有至少一個(gè)篩選項(xiàng)的篩選器的信息;用于將每個(gè)篩選器展開為一個(gè)被展開條件項(xiàng)的裝置;及條件測試裝置,用于判斷是否每個(gè)篩選項(xiàng)包括一個(gè)NOT連接詞以及每個(gè)篩選項(xiàng)是否為兩種類型篩選項(xiàng)中的一種。10.如權(quán)利要求9所述的目錄服務(wù)排列,其中兩種類型篩選項(xiàng)包括一種只有類型篩選項(xiàng)和一種類型和數(shù)值篩選項(xiàng)。11.如權(quán)利要求10所述的目錄服務(wù)排列,其中一個(gè)邏輯方法學(xué)被應(yīng)用于估價(jià)與只有類型篩選項(xiàng)相關(guān)聯(lián)的NOT連接詞。12.如權(quán)利要求11所述的目錄服務(wù)排列,其中該邏輯方法學(xué)包括一個(gè)遞減方法。13.如權(quán)利要求10所述的目錄服務(wù)排列,其中一個(gè)與類型和數(shù)值篩選項(xiàng)相關(guān)聯(lián)的NOT連接詞被推入該篩選項(xiàng)內(nèi),結(jié)果是改變該篩選項(xiàng)內(nèi)的一個(gè)運(yùn)算符。14.如權(quán)利要求9所述的目錄服務(wù)排列,其中該條件測試裝置還判斷是否每個(gè)篩選項(xiàng)能夠被預(yù)估價(jià)為真。15.如權(quán)利要求9所述的目錄服務(wù)排列,其中該條件測試裝置還判斷是否每個(gè)篩選項(xiàng)能夠被預(yù)估價(jià)為假,以便忽略該被展開條件項(xiàng)。16.如權(quán)利要求9所述的目錄服務(wù)排列,其中該條件測試裝置還判斷是否每個(gè)篩選項(xiàng)能夠被預(yù)估價(jià)為真,但被一個(gè)NOT連接詞所逆轉(zhuǎn),以便忽略該被展開條件項(xiàng)。17.一種處理數(shù)據(jù)庫服務(wù)查詢的方法,包括接收一個(gè)服務(wù)查詢;對該服務(wù)查詢應(yīng)用一個(gè)篩選器,結(jié)果得到零個(gè)或更多個(gè)篩選項(xiàng);對每個(gè)篩選項(xiàng)應(yīng)用一個(gè)條件測試以便確定一個(gè)該篩選項(xiàng)的形式。18.如權(quán)利要求17所述的方法,其中該條件測試判斷該篩選項(xiàng)是否為只有類型篩選項(xiàng)。19.如權(quán)利要求18所述的方法,還包括如果該篩選項(xiàng)是只有類型形式則根據(jù)一個(gè)邏輯方法學(xué)估價(jià)該篩選項(xiàng)。20.如權(quán)利要求19所述的方法,其中該邏輯方法學(xué)是一個(gè)遞減方法。21.如權(quán)利要求20所述的方法,其中該遞減方法包括使用一個(gè)ANSISQL“except”句子。22.如權(quán)利要求20所述的方法,其中該遞減方法將每個(gè)篩選項(xiàng)轉(zhuǎn)換為一個(gè)包含較少或沒有NOT連接詞的形式。23.如權(quán)利要求17所述的方法,其中該條件測試判斷該篩選項(xiàng)是否為類型和數(shù)值篩選項(xiàng)。24.如權(quán)利要求23所述的方法,其中如果該篩選項(xiàng)是類型和數(shù)據(jù)形式,則將代表該篩選項(xiàng)的SQL加至一個(gè)待估價(jià)的表達(dá)式中,這可能涉及至少一個(gè)表聯(lián)接。25.如權(quán)利要求23所述的方法,其中如果該篩選項(xiàng)是只有類型形式的一個(gè)逆項(xiàng),則將該NOT連接詞推入該篩選項(xiàng)。26.如權(quán)利要求25所述的方法,還包括將該被推的NOT連接詞應(yīng)用于一個(gè)運(yùn)算符。27.如權(quán)利要求26所述的方法,其中應(yīng)用該被推的NOT的步驟通過將該運(yùn)算符進(jìn)行逆操作而實(shí)現(xiàn)。28.一種目錄服務(wù)排列,包括多個(gè)表,每個(gè)表具有多行和多列,用于存儲任意數(shù)據(jù),其中這些表中的至少一個(gè)具有用于分解搜索服務(wù)中的篩選器的信息;及一個(gè)條件測試裝置,用于判斷一個(gè)篩選項(xiàng)是只有類型篩選項(xiàng)還是類型和數(shù)值篩選項(xiàng)。29.一種計(jì)算機(jī)程序產(chǎn)品,包括一種計(jì)算機(jī)可用介質(zhì),具有被埋嵌于所述介質(zhì)上的計(jì)算機(jī)可讀程序代碼,其中該計(jì)算機(jī)可讀程序代碼用于對一個(gè)篩選器的每個(gè)篩選項(xiàng)施加條件測試,以便判斷該篩選項(xiàng)是只有類型形式還是類型和數(shù)值形式,以及其中該篩選器適用于與一個(gè)目錄服務(wù)排列的搜索服務(wù)進(jìn)行交互操作。全文摘要提供一種用于處理數(shù)據(jù)庫服務(wù)查詢的方法,其結(jié)果是改進(jìn)服務(wù)查詢性能。在一個(gè)實(shí)施例中,該方法包括接收一個(gè)包括一個(gè)具有一個(gè)或多個(gè)篩選項(xiàng)的篩選器的服務(wù)查詢,將該篩選器展開以及將至少一個(gè)條件測試應(yīng)用于每個(gè)篩選項(xiàng)。測試條件的一個(gè)例子包括判斷是否每個(gè)篩選項(xiàng)包括一個(gè)NOT連接詞以及它屬于篩選項(xiàng)的第一形式或第二形式中的一個(gè)。第一形式可以是只有類型形式篩選項(xiàng),而第二形式可以是類型和數(shù)值形式篩選項(xiàng)。文檔編號G06F17/30GK1505789SQ01823184公開日2004年6月16日申請日期2001年4月27日優(yōu)先權(quán)日2001年4月27日發(fā)明者理查德·H·哈維,理查德H哈維申請人:計(jì)算機(jī)聯(lián)合思想公司