專利名稱::一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,特別涉及一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)。
背景技術(shù):
:隨著通信技術(shù)的發(fā)展,為滿足各種業(yè)務(wù)的需要,數(shù)據(jù)庫服務(wù)器中存儲的數(shù)據(jù)越來越多,對于大型應(yīng)用系統(tǒng)(如電信級應(yīng)用系統(tǒng)),數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)數(shù)量往往是百萬級的,而查詢并瀏覽數(shù)據(jù)是用戶最為常見的需求。如何從數(shù)據(jù)庫服務(wù)器龐大的數(shù)據(jù)中快速、可靠的讀取用戶需要的數(shù)據(jù)顯得尤為重要。在B/S(Browser/Server)瀏覽器/服務(wù)器模式和C/S(Client/Server)客戶端/服務(wù)器模式的應(yīng)用系統(tǒng)中,現(xiàn)有技術(shù)一般的查詢過程為數(shù)據(jù)存儲在數(shù)據(jù)庫服務(wù)器中,當(dāng)用戶需要查詢數(shù)據(jù)時,將查詢條件發(fā)給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器接到客戶端查詢請求后,將查詢?nèi)蝿?wù)提交給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫查詢出符合查詢條件的數(shù)據(jù),并發(fā)給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器再將查詢出的數(shù)據(jù)全部反饋給客戶端,在客戶端進(jìn)行緩存并顯示。發(fā)明人在研究中發(fā)現(xiàn),通過以上方法查詢數(shù)據(jù)存在如下問題現(xiàn)有技術(shù)中的查詢操作嚴(yán)重依賴數(shù)據(jù)庫服務(wù)器,受數(shù)據(jù)庫服務(wù)器處理速度的影響很大,數(shù)據(jù)庫服務(wù)器直接根據(jù)查詢條件查找數(shù)據(jù),在存儲有百萬級數(shù)據(jù)量的數(shù)據(jù)庫中過濾出符合查詢條件的數(shù)據(jù),對數(shù)據(jù)數(shù)據(jù)庫的負(fù)載很大,查詢效率也很低,影響客戶的查詢體驗(yàn)。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種數(shù)據(jù)查詢方法,用以在節(jié)省數(shù)據(jù)庫服務(wù)器資源占用的情況下,有效的提高數(shù)據(jù)查詢的效率。為解決以上問題,本發(fā)明所提供的實(shí)施例是通過以下技術(shù)方案實(shí)現(xiàn)的一種數(shù)據(jù)查詢方法,該方法包括應(yīng)用服務(wù)器接收來自客戶端的查詢第一數(shù)據(jù)的第一查詢請求,該第一查詢請求包括查詢條件和第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器根據(jù)查詢條件確定查詢主鍵,獲取與第一查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器利用第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值創(chuàng)建第一臨時表,該第一臨時表中每一個表項記錄有查詢主鍵的值,第一臨時表包含的表項數(shù)目等于第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器生成包含第一臨時表的表名的第一查詢語句,利用第一查詢語句向數(shù)據(jù)庫服務(wù)器查詢第一臨時表中的查詢主鍵的值標(biāo)識的第一數(shù)據(jù)。一種數(shù)據(jù)查詢裝置,該裝置包括接收模塊,接收來自客戶端的查詢數(shù)據(jù)的查詢請求,該查詢請求中包括查詢條件和所要查詢的數(shù)據(jù)的查詢結(jié)果項數(shù);執(zhí)行模塊,用于根據(jù)接收模塊接收到的查詢條件確定查詢主鍵;查詢模塊,用于生成包括查詢條件和查詢主鍵的第一查詢語句,利用第一查詢語句查詢查詢主鍵的值;指令模塊,用于指令數(shù)據(jù)庫服務(wù)器利用查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建臨時表,該臨時表中每一個表項記錄有查詢主鍵的值,所述臨時表包含的表項數(shù)目等于查詢結(jié)果項數(shù);查詢模塊,還用于生成包含臨時表的表名的第二查詢語句,利用第二查詢語句查詢臨時表中的查詢主鍵的值標(biāo)識的所述數(shù)據(jù)。一種數(shù)據(jù)查詢系統(tǒng),該系統(tǒng)包括客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器,其中,客戶端用于發(fā)送查詢數(shù)據(jù)的請求,該請求中包括查詢條件和數(shù)據(jù)的查詢結(jié)果項數(shù);應(yīng)用服務(wù)器用于接收客戶端發(fā)送的請求,根據(jù)請求中的查詢條件確定數(shù)據(jù)的查詢主鍵,生成包括查詢條件和查詢主鍵的第一查詢語句,第一查詢語句用于向所述數(shù)據(jù)庫服務(wù)器查詢查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器利用查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建臨時表,臨時表中每一個表項記錄有查詢主鍵的值,第一臨時表包含的表項數(shù)目等于第一查詢結(jié)果項數(shù),并生成第二查詢語句,利用第二查詢語句向數(shù)據(jù)庫服務(wù)器查詢臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù);數(shù)據(jù)庫服務(wù)器用于執(zhí)行第一查詢語句,查詢查詢主鍵的值,并創(chuàng)建臨時表,執(zhí)行第二查詢語句,查詢臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù)。通過以上的方案可以看出,本發(fā)明實(shí)施例中,通過確定滿足查詢條件的數(shù)據(jù)的查詢主鍵,可以使得數(shù)據(jù)庫服務(wù)器快速的查找出查詢主鍵的值,利用查詢結(jié)果項數(shù)及查詢出的與之對應(yīng)的查詢主鍵的值建立臨時表,從而查找出客戶端需要的數(shù)據(jù)。該查詢過程利用了查詢主鍵查找的快速性和臨時表的高效性,且該查詢結(jié)果是以查詢結(jié)果項數(shù)為基礎(chǔ),從而減少了數(shù)據(jù)的處理量和傳輸量,有效的減少了系統(tǒng)資源占用,提高了數(shù)據(jù)查詢的效率,提升了客戶端的查詢體驗(yàn)。圖1是本發(fā)明實(shí)施例中進(jìn)行首次數(shù)據(jù)查詢時的流程圖;圖2是本發(fā)明實(shí)施例中進(jìn)行拖動或翻頁查詢時的流程圖;圖3是本發(fā)明實(shí)施例中裝置實(shí)施例的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例中系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明實(shí)施例進(jìn)一步詳細(xì)說明。本發(fā)明實(shí)施例中,應(yīng)用服務(wù)器根據(jù)客戶端發(fā)送的查詢請求中的查詢條件確定查詢主鍵,并向數(shù)據(jù)庫服務(wù)器查詢該查詢主鍵的值,根據(jù)查詢請求中的查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值指令數(shù)據(jù)庫服務(wù)器建立臨時表,最后查詢臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù),查詢出客戶端所需的數(shù)據(jù)。通過以上技術(shù)手段,提升了數(shù)據(jù)查詢的效率,減輕數(shù)據(jù)庫服務(wù)器的負(fù)荷,從而提升了客戶端的查詢體驗(yàn)。下面對該實(shí)現(xiàn)過程進(jìn)行詳細(xì)的說明。本發(fā)明實(shí)施例提供一種查詢數(shù)據(jù)的方法,包括應(yīng)用服務(wù)器接收來自客戶端的查詢第一數(shù)據(jù)的第一查詢請求,所述第一查詢請求包括查詢條件和第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器根據(jù)所述查詢條件確定查詢主鍵,獲取與所述第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器利用第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值創(chuàng)建第一臨時表,所述第一臨時表中每一個表項記錄有查詢主鍵的值,所述第一臨時表包含的表項數(shù)目等于第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器生成包含第一臨時表的表名的第一查詢語句,利用所述第一查詢語句向數(shù)據(jù)庫服務(wù)器查詢所述第一臨時表中的查詢主鍵的值標(biāo)識的所述第一數(shù)據(jù)。具體流程如圖1和圖2所示,其中,圖1是客戶端進(jìn)行首次查詢時的流程圖,圖2是客戶端在后續(xù)的拖動或翻頁查詢時的流程圖。首先對客戶端進(jìn)行首次數(shù)據(jù)查詢時的過程進(jìn)行詳細(xì)說明S101、客戶端向應(yīng)用服務(wù)器發(fā)送查詢請求,該查詢請求用于向應(yīng)用服務(wù)器查詢符合一定查詢條件的數(shù)據(jù),該查詢請求中包括要查詢的數(shù)據(jù)的查詢條件和查詢結(jié)果項數(shù)。此處的客戶端根據(jù)實(shí)際需求查詢滿足一定條件的數(shù)據(jù)。例如,要查詢?nèi)珖丝谛畔?shù)據(jù)庫中某個姓氏人口所有信息,該人口數(shù)據(jù)庫如表1所示,表中包括的人口信息有People_ID身份證號碼、Name(姓名)、Gender(性別)、Age(年齡)、Birth(生日)禾口Address(住址)等信息。此時,客戶端將查詢條件(例如姓李的人口信息)、查詢結(jié)果項數(shù)攜帶于查詢請求中發(fā)送給應(yīng)用服務(wù)器,該人口信息包括身份證號、性別、姓名、年齡等,查詢結(jié)果項數(shù)的大小一般等于客戶端能夠顯示的緩沖區(qū)的大小,如顯示器每屏只能顯示80行,則該查詢結(jié)果項數(shù)就為80個,當(dāng)然也可以根據(jù)需要設(shè)定一定的查詢結(jié)果項數(shù),本實(shí)施例中以80行為例,則查詢結(jié)果項數(shù)為80個。S102-S103、應(yīng)用服務(wù)器接收到客戶端發(fā)送的查詢請求后,根據(jù)查詢請求中的查詢條件確定查詢主鍵,然后生成包括上述查詢條件和上述查詢主鍵的第一查詢語句,利用第一查詢語句向數(shù)據(jù)庫服務(wù)器查詢上述查詢主鍵的值,數(shù)據(jù)庫服務(wù)器根據(jù)應(yīng)用服務(wù)器的第一查詢語句查詢所述查詢主鍵的值。接上例中查詢姓李的人口信息這一查詢過程。應(yīng)用服務(wù)器接收到查詢“姓李的人口信息”這一查詢請求后,首先將用戶端來的查詢條件生成第二查詢語句。本發(fā)明實(shí)施例中的查詢語句(包括本發(fā)明實(shí)施例中出現(xiàn)的第一查詢語句、第二查詢語句...和第八查詢語句)為數(shù)據(jù)庫服務(wù)器能夠識別的查詢語句,優(yōu)選的,本發(fā)明實(shí)施例中以SQUStructuredQueryLanguage,結(jié)構(gòu)化查詢語言)語句為例進(jìn)行說明。本實(shí)施例中,根據(jù)客戶端的請求生成的第二查詢語句為"selectPeople_ID,Name,Gender,Age,Birth,Address...fromPeople_TablewhereName1土15%李%”,其中,"selectPeopleID_ID,Name,Gender,Age,Birth,Address.··”表示要查詢的人口信息包括“People_ID(身份證號),Name(姓名),Gender(性別),Age(年齡),Birth(生日),Address(住址)··.,,等信息,"fromPeople,Table”表示從人口數(shù)據(jù)庫中查詢,“whereName”表示條件為“姓李的信息”。隨后,應(yīng)用服務(wù)器將上述第二查詢語句轉(zhuǎn)換成包括上述查詢條件和應(yīng)用服務(wù)器根據(jù)上述查詢條件確定的查詢主鍵第一查詢語句,該第一查詢語句用于查詢查詢主鍵的值。應(yīng)用服務(wù)器根據(jù)查詢條件,從多個候選索引(本例中候選索引有People_ID,Name,Gender,Age,Birth,Address等)中選擇能夠唯一標(biāo)識符合查詢條件的數(shù)據(jù)的查詢主鍵(選出的查詢主鍵可能包括一個或多個候選索引),所謂查詢主鍵,是能夠唯一標(biāo)識數(shù)據(jù)表中某一行的屬性或?qū)傩越M,一個數(shù)據(jù)表通常只有一個查詢主鍵,但查詢主鍵可以包括多個候選索引列。本例中能夠唯一標(biāo)識本例中查詢條件的為People_ID列,即查詢主鍵為Pe0ple_ID。然后應(yīng)用服務(wù)器生成包括查詢條件和查詢主鍵的第一查詢語句,生成的第一查詢語句為“selectPeople_IDfromPeople_Tablewhere”,其中,“selectPeople_ID”表示要查詢的內(nèi)容為PeopleJD(身份證號),其他部分表示的含義同第二查詢語句。應(yīng)用服務(wù)器將生成的第一查詢語句發(fā)送給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫服務(wù)器根據(jù)第一查詢語句的指示,查詢出查詢主鍵的值,即PeopleJD(身份證號)的內(nèi)容,該內(nèi)容即為符合查詢條件的查詢主鍵的值。在大數(shù)量級的數(shù)據(jù)庫服務(wù)器中,都會對其存儲的數(shù)據(jù)建立數(shù)據(jù)表,并會為每個數(shù)據(jù)表建立候選索引列,以方便應(yīng)用服務(wù)器對其進(jìn)行管理,應(yīng)用服務(wù)器從候選索引中確定出查詢主鍵后,就可以指定數(shù)據(jù)庫服務(wù)器找出查詢主鍵的值,且查詢查詢主鍵的值是非常高效的,有利于提高整個查詢過程的查詢效率。表lPeople_Table(人口數(shù)據(jù)庫)S104-S106、數(shù)據(jù)庫服務(wù)器將查詢出的查詢主鍵的值返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將返回的與所述查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值加載入內(nèi)存中,并根據(jù)要查詢的查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值指令數(shù)據(jù)庫服務(wù)器創(chuàng)建臨時表,該臨時表中的每一個表項記錄有查詢主鍵的值,且臨時表中的表項數(shù)目等于查詢結(jié)果項數(shù)。接上例中查詢姓李的人口信息這一查詢過程。數(shù)據(jù)庫服務(wù)器查詢出符合查詢條件的查詢主鍵的值后,將查詢主鍵的值返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器首先將首次查詢的查詢結(jié)果項數(shù)(本例中為前80個)的查詢主鍵的值加載入內(nèi)存,應(yīng)用服務(wù)器指令數(shù)據(jù)庫服務(wù)器創(chuàng)建臨時表,該臨時表中的每一個表項記錄有查詢主鍵的值,且臨時表中的表項數(shù)目等于查詢結(jié)果項數(shù),優(yōu)選的,該臨時表中有表示查詢結(jié)果項數(shù)的列和表示查詢主鍵的值的列,在表示查詢結(jié)果項數(shù)列中有所述查詢結(jié)果項數(shù)的序號,在表示查詢主鍵的值的列中有查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值,優(yōu)選的,臨時表中的查詢結(jié)果項數(shù)的序號和查詢主鍵的值可以通過批插的方式插入。本例中創(chuàng)建的臨時表為“createtable#n30_161xx(row_noint,tmp_0numeric(20))”,其中,“createtable”表示創(chuàng)建數(shù)據(jù)表,“#”表示是臨時表,“n30_161XX”表示臨時表的名稱,“r0W_n0int”表示臨時表中一列的內(nèi)容為本次查詢的查詢結(jié)果項數(shù)的序號,“tmp_0”表示臨時表中一列的內(nèi)容為所述查詢主鍵的值,“numeric(20)”表示所建的臨時表中的內(nèi)容是數(shù)據(jù)格式的。該臨時表中包括表示查詢結(jié)果項數(shù)(r0W_n0int)的列和表示查詢主鍵的列(tmp_0)。生成的臨時表如表2所示,表的列中包括序號,如“r0W_n0”列中是本次查詢所需的查詢結(jié)果項數(shù),從0到79行的序號,“Tmp_0”列中是查詢主鍵的值,本例中是查詢出的身份證號。表2臨時表S107、應(yīng)用服務(wù)器生成第三查詢語句,所述第三查詢語句用于向數(shù)據(jù)庫服務(wù)器查詢所述查詢主鍵的值標(biāo)識的數(shù)據(jù),數(shù)據(jù)庫服務(wù)器執(zhí)行第三查詢語句,查詢出的數(shù)據(jù)即為符合查詢條件的數(shù)據(jù),將該數(shù)據(jù)返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將上述數(shù)據(jù)返回給客戶端。應(yīng)用服務(wù)器根據(jù)臨時表和客戶端提交的查詢條件生成第三查詢語句,本例中生成的第三查詢語句可為"selectPeople_ID,Name,Gender,Age,Birth,Address...fromPeople_Table,#n30_161xxwherePeople_ID=tmp_00RDERBYrow_noASC,,,其中,"People_ID,Name,Gender,Age,Bath,Address...,,是本次查詢的人口信息的內(nèi)容,"fromPeople_Table,,表示從人口數(shù)據(jù)庫中進(jìn)行查詢,"#n30_161xxwherePeople_ID=tmp_0,,表示要查詢臨時表中查詢主鍵的值標(biāo)識的身份證號所對應(yīng)人口信息,"ORDERBYrow_noASC”表示以臨時表的查詢結(jié)果項數(shù)中的序號排序。應(yīng)用服務(wù)器接收到第三SQL語句后,執(zhí)行該查詢語句,查詢出滿足第三查詢語句的數(shù)據(jù),該數(shù)據(jù)即為客戶端首次查詢所要的數(shù)據(jù),并將查詢出的數(shù)據(jù)返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將上述數(shù)據(jù)返回給客戶端,然后數(shù)據(jù)庫服務(wù)器將第一臨時表刪除。S110-S111、應(yīng)用服務(wù)器繼續(xù)將數(shù)據(jù)庫服務(wù)器返回的查詢主鍵的值加載入內(nèi)存,并通知客戶端加載進(jìn)度。在S105步驟中,應(yīng)用服務(wù)器只加載用戶首次查詢所需的查詢結(jié)果項數(shù)(前80個)對應(yīng)的查詢主鍵的值,SllO步驟是將除S105步驟外的其他查詢主鍵的值加載入內(nèi)存,以方便用戶在后續(xù)的拖動或翻頁操作時的查詢,當(dāng)然,S110-S111步驟與S105-S109步驟之間并沒有嚴(yán)格的先后順序,可以同時進(jìn)行。上述過程是對客戶端的首次查詢過程的詳細(xì)描述,客戶端在完成首次的查詢后,還可能通過拖動或者翻頁的形式對其余符合查詢條件的數(shù)據(jù)進(jìn)行查看,以下是客戶端在拖動或翻頁查看時的查詢過程,具體流程如圖2所示S201、客戶端向應(yīng)用服務(wù)器發(fā)送查詢請求,向應(yīng)用服務(wù)器查詢符合一定查詢條件的數(shù)據(jù),該查詢請求中包括本次查詢的查詢條件和所要查詢的查詢結(jié)果項數(shù)。在客戶端進(jìn)行拖動操作時,查詢條件與首次查詢時的查詢條件相同,查詢結(jié)果項數(shù)的大小等于客戶端拖動的行數(shù),在客戶端進(jìn)行翻頁操作時查詢結(jié)果項數(shù)是能夠顯示的緩沖區(qū)的大小,如顯示器每屏只能顯示80行,則該查詢結(jié)果項數(shù)就為(n-[n+79])個。S202、應(yīng)用服務(wù)器接收到客戶端發(fā)送的查詢請求后,根據(jù)查詢條件和第二查詢結(jié)果項數(shù)從其內(nèi)存中獲取與第二查詢結(jié)果項數(shù)對應(yīng)的第二查詢主鍵的值。S203、應(yīng)用服務(wù)器指令數(shù)據(jù)庫服務(wù)器創(chuàng)建第二臨時表,該第二臨時表中每一個表項記錄有查詢主鍵的值,該第二臨時表中包含的表項數(shù)目等于第二查詢結(jié)果項數(shù)。優(yōu)選的,第二臨時表中可以包括表示第二查詢結(jié)果項數(shù)的列和表示查詢主鍵的值的列,其中,在表示查詢結(jié)果項數(shù)的列中有所述查詢結(jié)果項數(shù)的序號,在表示查詢主鍵的值的列中有查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值。優(yōu)選的,臨時表中的查詢結(jié)果項數(shù)的序號和查詢主鍵的值可以通過批插的方式插入。該過程同S106,只是這時的查詢結(jié)果項數(shù)列的內(nèi)容和索引信息列的內(nèi)容有不同,此處不再詳述。S204、應(yīng)用服務(wù)器生成包括臨時表表名的第四查詢語句,向數(shù)據(jù)庫服務(wù)器進(jìn)行查詢,數(shù)據(jù)庫服務(wù)器根據(jù)第四查詢語句查詢出符合查詢條件的數(shù)據(jù),該數(shù)據(jù)即為客戶端需要的數(shù)據(jù),將該數(shù)據(jù)返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將上述數(shù)據(jù)返回給客戶端。該第四查詢語句與第三查詢語句的不同在于,第四SQL語句中的臨時表為S203創(chuàng)建的第二臨時表,其它部分相同,具體的查詢過程同S107步驟,此處不再詳述。S205-S206、數(shù)據(jù)庫服務(wù)器將查詢出的數(shù)據(jù)返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將數(shù)據(jù)返回給客戶端,數(shù)據(jù)庫服務(wù)器將第二臨時表刪除。用戶繼續(xù)進(jìn)行拖動或翻頁查看時,只需重復(fù)S201到S206的步驟即可。上述發(fā)明實(shí)施例提供的方法,由于利用了查詢主鍵查詢的高效性和臨時表的高效性(所有數(shù)據(jù)庫操作系統(tǒng)均有臨時表的高效機(jī)制),使得查詢操作本身效率得到很大提高,客戶端能夠迅速響應(yīng)用戶的查詢需求。利用本方法,以200萬數(shù)據(jù)進(jìn)行測試,在CPU與10(接口設(shè)備)資源消耗均在90%的情況下,客戶端與服務(wù)器的每次交互在IS以內(nèi),而在采用此方案前,在同樣背景下,客戶端與服務(wù)器的每次交互在20S以上,效率提高近10倍。本發(fā)明實(shí)施例還提供一種數(shù)據(jù)查詢的裝置,該裝置為應(yīng)用服務(wù)器,具體包括接收模塊301,執(zhí)行模塊302,查詢模塊303,指令模塊304和存儲模塊305。其中,接收模塊301用于接收來自客戶端的查詢數(shù)據(jù)的查詢請求,該查詢請求中包括本次查詢的查詢條件和所要查詢數(shù)據(jù)的查詢結(jié)果項數(shù)。執(zhí)行模塊302,用于根據(jù)接收模塊301接收到的查詢條件確定查詢主鍵。該過程同方法實(shí)施例中確定查詢主鍵的過程,此處不再詳述。查詢模塊303,用于生成包括上述查詢條件和上述查詢主鍵的第五查詢語句,該第五查詢語句查詢執(zhí)行模塊302確定的查詢主鍵的值。該第五查詢語句的具體結(jié)構(gòu)同方法實(shí)施例中查詢查詢主鍵的值的查詢語句,此處不再詳述。指令模塊304,用于指令數(shù)據(jù)庫服務(wù)器利用查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建臨時表,該臨時表中每一個表項記錄有查詢主鍵的值,該臨時表包含的表項數(shù)目等于查詢結(jié)果項數(shù)。查詢模塊303,還用于生成包含臨時表的表名的第六查詢語句,該第六查詢語句用于查詢所述臨時表中的查詢主鍵的值標(biāo)識的數(shù)據(jù)。另外,接收模塊301,還用于接收數(shù)據(jù)庫服務(wù)器返回查詢主鍵的值和數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)。該裝置還包括存儲模塊305,用于存儲接收模塊301接收到的查詢主鍵的值。本發(fā)明實(shí)施例還提供一種數(shù)據(jù)查詢的系統(tǒng),該系統(tǒng)包括客戶端401,應(yīng)用服務(wù)器402和數(shù)據(jù)庫服務(wù)器403。其中,客戶端401用于發(fā)送查詢請求,向應(yīng)用服務(wù)器查詢符合一定查詢條件的數(shù)據(jù),該查詢請求中包括本次查詢的查詢條件和所要查詢數(shù)據(jù)的查詢結(jié)果項數(shù)。該查詢結(jié)果項數(shù)的大小一般等于客戶端能夠顯示的緩沖區(qū)的大小,如顯示器每屏只能顯示80行,則該查詢結(jié)果項數(shù)就為80個,當(dāng)然也可以根據(jù)需要設(shè)定一定的查詢結(jié)果項數(shù)。并接收應(yīng)用服務(wù)器402返回的符合查詢條件的數(shù)據(jù)。具體過程同方法實(shí)施例中相應(yīng)部分。應(yīng)用服務(wù)器402用于接收客戶端401發(fā)送的查詢請求,根據(jù)查詢請求中的查詢條件確定要查詢的數(shù)據(jù)的查詢主鍵,然后生成包括上述查詢條件和上述查詢主鍵的第七查詢語句,利用第七查詢語句向數(shù)據(jù)庫服務(wù)器403查詢該查詢主鍵的值,并接收數(shù)據(jù)庫服務(wù)器403返回的查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器403創(chuàng)建臨時表,該臨時表中每一個表項記錄有查詢主鍵的值,且該臨時表中包含的表項數(shù)目等于查詢結(jié)果項數(shù),并生成包含臨時表的表名的第八查詢語句,利用該第八查詢語句向數(shù)據(jù)庫服務(wù)器403查詢臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù),該數(shù)據(jù)即為客戶端需要的數(shù)據(jù),接收數(shù)據(jù)庫服務(wù)器403返回的符合查詢條件的數(shù)據(jù),將該數(shù)據(jù)返回給客戶端401。數(shù)據(jù)庫服務(wù)器403用于執(zhí)行以上的第七查詢語句,查詢出查詢主鍵的值,執(zhí)行第八查詢語句,查詢出臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù),數(shù)據(jù)庫服務(wù)器403還用于將查詢出的數(shù)據(jù)發(fā)送給應(yīng)用服務(wù)器402。上述各個設(shè)備具體的執(zhí)行過程同方法實(shí)施例,此處不在贅述。本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory,ROM)或隨機(jī)存儲記憶體(RandomAccessMemory,RAM)等。本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。權(quán)利要求一種數(shù)據(jù)查詢方法,其特征在于,所述方法包括應(yīng)用服務(wù)器接收來自客戶端的查詢第一數(shù)據(jù)的第一查詢請求,所述第一查詢請求包括查詢條件和第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器根據(jù)所述查詢條件確定查詢主鍵,獲取與所述第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器利用所述第一查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建第一臨時表,所述第一臨時表中每一個表項記錄有查詢主鍵的值,所述第一臨時表包含的表項數(shù)目等于第一查詢結(jié)果項數(shù);應(yīng)用服務(wù)器生成包含第一臨時表的表名的第一查詢語句,利用所述第一查詢語句向數(shù)據(jù)庫服務(wù)器查詢所述第一臨時表中的查詢主鍵的值標(biāo)識的所述第一數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取與所述第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值,具體包括應(yīng)用服務(wù)器生成包括所述查詢條件和所述查詢主鍵的第二查詢語句,利用所述第二查詢語句向數(shù)據(jù)庫服務(wù)器查詢所述查詢主鍵的值,接收所述數(shù)據(jù)庫服務(wù)器返回的所述查詢主鍵的值,保存與所述第一查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括應(yīng)用服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器返回的所述第一數(shù)據(jù),并發(fā)送給客戶端。4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括保存所述查詢主鍵的值。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括應(yīng)用服務(wù)器接收查詢第二數(shù)據(jù)的第二查詢請求,所述第二查詢請求包括所述查詢條件和第二查詢結(jié)果項數(shù);應(yīng)用服務(wù)器根據(jù)所述查詢條件和所述第二查詢結(jié)果項數(shù)獲取與所述第二查詢結(jié)果項數(shù)對應(yīng)的查詢主鍵的值,并指令數(shù)據(jù)庫服務(wù)器利用所述第二查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建第二臨時表,所述第二臨時表中每一個表項記錄有查詢主鍵的值,所述第二臨時表包含的表項數(shù)目等于第二查詢結(jié)果項數(shù);應(yīng)用服務(wù)器生成包含第二臨時表的表名的第三查詢語句,利用所述第三查詢語句向數(shù)據(jù)庫服務(wù)器查詢第二臨時表中查詢主鍵的值標(biāo)識的所述第二數(shù)據(jù)。6.一種數(shù)據(jù)查詢裝置,其特征在于,所述裝置包括接收模塊,用于接收來自客戶端的查詢數(shù)據(jù)的查詢請求,所述查詢請求中包括查詢條件和所要查詢的數(shù)據(jù)的查詢結(jié)果項數(shù);執(zhí)行模塊,用于根據(jù)所述接收模塊接收到的所述查詢條件確定查詢主鍵;查詢模塊,用于生成包括所述查詢條件和所述查詢主鍵的第一查詢語句,利用所述第一查詢語句查詢所述查詢主鍵的值;指令模塊,用于指令數(shù)據(jù)庫服務(wù)器利用查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建臨時表,所述臨時表中每一個表項記錄有查詢主鍵的值,所述臨時表包含的表項數(shù)目等于查詢結(jié)果項數(shù);查詢模塊,還用于生成包含臨時表的表名的第二查詢語句,利用所述第二查詢語句查詢所述臨時表中的查詢主鍵的值標(biāo)識的所述數(shù)據(jù)。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括存儲模塊,所述存儲模塊用于存儲所述查詢主鍵的值。8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述接收模塊還用于接收所述數(shù)據(jù)。9.一種數(shù)據(jù)查詢系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器,其中,所述客戶端用于發(fā)送查詢數(shù)據(jù)的請求,所述請求中包括查詢條件和數(shù)據(jù)的查詢結(jié)果項數(shù);所述應(yīng)用服務(wù)器用于接收所述客戶端發(fā)送的所述請求,根據(jù)所述請求中的查詢條件確定所述數(shù)據(jù)的查詢主鍵,生成包括所述查詢條件和所述查詢主鍵的第一查詢語句,利用所述第一查詢語句向所述數(shù)據(jù)庫服務(wù)器查詢所述查詢主鍵的值,并指令所述數(shù)據(jù)庫服務(wù)器利用查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建臨時表,所述臨時表中每一個表項記錄有查詢主鍵的值,所述臨時表包含的表項數(shù)目等于查詢結(jié)果項數(shù),并生成包含臨時表的表名的第二查詢語句,利用所述第二查詢語句向數(shù)據(jù)庫服務(wù)器查詢所述臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù);所述數(shù)據(jù)庫服務(wù)器用于執(zhí)行所述第一查詢語句,查詢所述查詢主鍵的值,并創(chuàng)建臨時表,執(zhí)行所述第二查詢語句,查詢所述臨時表中查詢主鍵的值標(biāo)識的所述數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,還包括,所述數(shù)據(jù)庫服務(wù)器還用于將查詢出的所述數(shù)據(jù)發(fā)送給所述應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器還用于將所述數(shù)據(jù)發(fā)送給所述客戶端。全文摘要本發(fā)明實(shí)施例提供一種數(shù)據(jù)查詢的方法,應(yīng)用服務(wù)器根據(jù)客戶端發(fā)送的查詢符合一定查詢條件的數(shù)據(jù)的查詢請求,確定查詢主鍵,并向數(shù)據(jù)庫服務(wù)器查詢該查詢主鍵的值,根據(jù)查詢請求中的查詢結(jié)果項數(shù)及對應(yīng)的查詢主鍵的值創(chuàng)建數(shù)據(jù)庫臨時表,最后查詢出臨時表中查詢主鍵的值標(biāo)識的數(shù)據(jù),該數(shù)據(jù)即為客戶端所需的數(shù)據(jù)。本發(fā)明還提供一種數(shù)據(jù)查詢的裝置和系統(tǒng)。通過本發(fā)明實(shí)施例提供技術(shù)方案可以提高數(shù)據(jù)查詢的效率。文檔編號G06F17/30GK101860449SQ20091010664公開日2010年10月13日申請日期2009年4月9日優(yōu)先權(quán)日2009年4月9日發(fā)明者李宗標(biāo),沈琦,蔣英茹,魏雪鋒申請人:華為技術(shù)有限公司