本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,尤其涉及一種數(shù)據(jù)查詢方法及裝置。
背景技術(shù):
:數(shù)組是計(jì)算機(jī)中常用的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù)在內(nèi)存中可以實(shí)現(xiàn)連續(xù)存儲(chǔ),因此,通過(guò)數(shù)組的內(nèi)存起始地址和數(shù)組元素的下標(biāo),可快速定位數(shù)組內(nèi)的元素。現(xiàn)今,在計(jì)算機(jī)領(lǐng)域,在進(jìn)行數(shù)據(jù)查詢操作時(shí),cpu在從內(nèi)存中取得數(shù)據(jù)的時(shí)候,會(huì)將取得數(shù)據(jù)所在的內(nèi)存行都讀取到高速緩存中,再?gòu)母咚倬彺嬷凶x取數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢操作。但是,由于高速緩存的容量遠(yuǎn)遠(yuǎn)小于內(nèi)存,若取得的內(nèi)存行的數(shù)據(jù)量比較大,會(huì)導(dǎo)致高速緩存空間被占滿,這樣,只能從內(nèi)存中讀取其他行的數(shù)據(jù)。由于內(nèi)存的訪問(wèn)速度是遠(yuǎn)遠(yuǎn)小于高速緩存的,從內(nèi)存中讀取其他行的數(shù)據(jù),就會(huì)導(dǎo)致數(shù)據(jù)查詢操作的效率降低。技術(shù)實(shí)現(xiàn)要素:基于上述現(xiàn)有技術(shù)的不足,本發(fā)明提出一種數(shù)據(jù)查詢方法及裝置,以解決現(xiàn)有技術(shù)中存在的數(shù)據(jù)查詢操作效率低的問(wèn)題。為解決上述問(wèn)題,現(xiàn)提出的方案如下:一種數(shù)據(jù)查詢方法,包括:解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù);將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組;將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)??蛇x地,所述針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)之后,還包括:分別將所述每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組;其中,所述將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組,包括:針對(duì)所述每一個(gè)二元組,分別將所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組、以及所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組進(jìn)行拼接,獲得拼接后的數(shù)組??蛇x地,所述將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組,包括:將所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)的后面??蛇x地,所述將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ),包括:將每一個(gè)二元組的拼接后的數(shù)組,按照所述二元組的指針的排序順序進(jìn)行存儲(chǔ)??蛇x地,所述解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,之后,還包括:判斷所述每一個(gè)二元組的結(jié)果元素是否滿足預(yù)設(shè)條件;若判斷出二元組的結(jié)果元素滿足預(yù)設(shè)條件,則所述讀取所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),包括:讀取所述二元組的結(jié)果元素的存儲(chǔ)地址;若判斷出二元組的結(jié)果元素不滿足預(yù)設(shè)條件,則執(zhí)行讀取所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的步驟??蛇x地,所述判斷所述每一個(gè)二元組的結(jié)果元素是否滿足預(yù)設(shè)條件,包括:判斷所述每一個(gè)二元組的結(jié)果元素的數(shù)量是否超過(guò)第一預(yù)設(shè)閾值;或者,判斷所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否超過(guò)第二預(yù)設(shè)閾值。一種數(shù)據(jù)查詢裝置,包括:解析單元,用于解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;讀取單元,用于針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù);拼接單元,用于將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組;存儲(chǔ)單元,用于將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)。可選地,還包括:轉(zhuǎn)換單元,用于在針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)之后,分別將所述每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組;其中,所述拼接單元,包括:第一拼接單元,用于針對(duì)所述每一個(gè)二元組,分別將所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組、以及所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組??蛇x地,所述拼接單元,包括:第二拼接單元,用于將所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)的后面??蛇x地,所述存儲(chǔ)單元,包括:第一存儲(chǔ)單元,用于將每一個(gè)二元組的拼接后的數(shù)組,按照所述二元組的指針的排序順序進(jìn)行存儲(chǔ)。可選地,所述解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,之后,還包括:判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素是否滿足預(yù)設(shè)條件;若所述判斷單元判斷出二元組的結(jié)果元素滿足預(yù)設(shè)條件,所述讀取單元包括:第一讀取單元,用于讀取所述二元組的結(jié)果元素的存儲(chǔ)地址;若所述判斷單元判斷出二元組的結(jié)果元素不滿足預(yù)設(shè)條件,則所述判斷單元執(zhí)行讀取所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)??蛇x地,所述判斷單元,包括:第一判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素的數(shù)量是否超過(guò)第一預(yù)設(shè)閾值;第二判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否超過(guò)第二預(yù)設(shè)閾值。本發(fā)明提供的數(shù)據(jù)查詢方法中,用戶發(fā)送數(shù)據(jù)查詢指令后,解析該指令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,再將每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后數(shù)組,并進(jìn)行存儲(chǔ),可以保證依據(jù)數(shù)據(jù)查詢指令進(jìn)行操作時(shí),只要讀取二元組的排序元素和結(jié)果元素,避免了二元組的其他元素被讀取而占用高速緩存的空間,進(jìn)而解決了現(xiàn)有技術(shù)中存在因需要從內(nèi)存中讀取二元組的元素而導(dǎo)致的數(shù)據(jù)查詢操作效率低的問(wèn)題。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例公開(kāi)的一種數(shù)據(jù)查詢方法的流程圖;圖2是本發(fā)明另一實(shí)施例公開(kāi)的一種數(shù)據(jù)查詢方法的流程圖;圖3為本發(fā)明另一實(shí)施例公開(kāi)的數(shù)據(jù)查詢方法的流程圖;圖4為本發(fā)明另一實(shí)施例公開(kāi)的數(shù)據(jù)查詢裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明另一實(shí)施例公開(kāi)的數(shù)據(jù)查詢裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍?,F(xiàn)今,在計(jì)算機(jī)領(lǐng)域經(jīng)常進(jìn)行數(shù)據(jù)查詢操作為:定義一個(gè)二元組x,包括排序元素和結(jié)果元素,將多個(gè)二元組按照排序元素排序,然后按照排序后的順序取出結(jié)果元素。例如:定義一個(gè)類(lèi)user,用于表示用戶,其中,排序元素為age,用于表示年齡;結(jié)果元素為name,用于表示姓名;按照年齡從小到大將用戶排序,然后依次取得姓名。以java語(yǔ)言存儲(chǔ)數(shù)據(jù)為例,user對(duì)象數(shù)組的內(nèi)存排列如表一所示。表一user1user2user3user4user5user1的ageuser1的nameuser1其他屬性u(píng)ser1其他屬性u(píng)ser1其他屬性u(píng)ser5的ageuser5的ageuser5其他屬性u(píng)ser5其他屬性u(píng)ser5其他屬性u(píng)ser2的ageuser2的nameuser2其他屬性u(píng)ser2其他屬性u(píng)ser2其他屬性具體的,定義一個(gè)類(lèi)user的過(guò)程的一種實(shí)現(xiàn)包括:先構(gòu)造user的數(shù)組,然后比較數(shù)組中user元素的age屬性,并進(jìn)行排序,然后依次取name。其中,user數(shù)組中的元素是user對(duì)象的引用,是存儲(chǔ)在java堆內(nèi)存中。比較數(shù)組中user元素的age屬性前,需先從java堆內(nèi)存中讀取行數(shù)據(jù)到高速緩存,如讀取上表中的每一行,由于每一行的數(shù)據(jù)中除排序元素和結(jié)果元素外,還包含user的其他屬性,這些數(shù)據(jù)會(huì)占據(jù)高速緩存的空間,若這些數(shù)據(jù)的數(shù)據(jù)量較大,則會(huì)導(dǎo)致高速緩存的空間被占滿,那會(huì)導(dǎo)致所有的行數(shù)據(jù)不能夠都被讀取到高速緩存中,就需要從java堆內(nèi)存中讀取行數(shù)據(jù),降低數(shù)據(jù)查詢操作的效率?;诖?,本發(fā)明實(shí)施例公開(kāi)了一種數(shù)據(jù)查詢方法及裝置,以解決現(xiàn)有技術(shù)中存在的數(shù)據(jù)查詢操作效率低的問(wèn)題。本發(fā)明實(shí)施例公開(kāi)的數(shù)據(jù)查詢方法,參見(jiàn)圖1,包括步驟:s101、解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;需要說(shuō)明的是,用戶執(zhí)行數(shù)據(jù)查詢操作,輸入數(shù)據(jù)查詢命令,該數(shù)據(jù)查詢命令需要攜帶有要執(zhí)行操作的二元組的名稱(chēng),以及二元組的排序元素的名稱(chēng)、結(jié)果元素的名稱(chēng)。例如:用戶要執(zhí)行的數(shù)據(jù)查詢操作是:將二元組user1-user10按照排序元素age排序,然后按照排序后的順序取出結(jié)果元素name。因此,解析用戶輸入的數(shù)據(jù)查詢命令,獲得的二元組包括:user1-user10,并且,每一個(gè)二元組的排序元素為age,結(jié)果元素為name。s102、針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù);其中,每一個(gè)二元組的排序元素和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)均存儲(chǔ)在除高速緩存以外的存儲(chǔ)區(qū)域中,例如:內(nèi)存,以下以內(nèi)存為例進(jìn)行說(shuō)明。解析數(shù)據(jù)查詢命令之后,需在內(nèi)存中開(kāi)辟一個(gè)空閑的存儲(chǔ)區(qū)域,讀取每一個(gè)二元組的行數(shù)據(jù),并提取該行數(shù)據(jù)中的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),并將每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)到內(nèi)存的空閑的存儲(chǔ)區(qū)域中。續(xù)接上述實(shí)例,讀取user1-user10中的每一個(gè)二元組的行數(shù)據(jù)中,排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),以二元組user1為例,該二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)可稱(chēng)之為user1的age,結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)可稱(chēng)之為user1的name。s103、將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組;其中,在內(nèi)存的空閑存儲(chǔ)區(qū)域中,將讀取的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,得到拼接后的數(shù)組。并且,若排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)本身即為字節(jié)類(lèi)型,則直接可以拼接排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),形成拼接后的字節(jié)數(shù)組。還需要說(shuō)明的是,步驟s102中,僅讀取每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),可以避免其他元素對(duì)應(yīng)的數(shù)據(jù)占據(jù)高速緩存的問(wèn)題。進(jìn)一步的,只有將二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接后,形成拼接后的字節(jié)數(shù)組,才可以保障拼接后的字節(jié)數(shù)組在進(jìn)行存儲(chǔ)時(shí)是連續(xù)存儲(chǔ)的,進(jìn)而能夠在進(jìn)行數(shù)據(jù)查詢時(shí),提取的每一行的數(shù)據(jù)都是需要用到的排序元素和結(jié)果元素??蛇x地,本發(fā)明的另一實(shí)施例中,本步驟的具體實(shí)現(xiàn)方式可以為:將所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)的后面。由于數(shù)據(jù)查詢命令中,要將二元組按照排序元素排序,然后按照排序后的順序取出結(jié)果元素,將結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)后面。這樣,在讀取拼接后的數(shù)組,進(jìn)行數(shù)據(jù)比對(duì)時(shí),靠前的字節(jié)優(yōu)選參與對(duì)比,可以直接比較位于較前位置的排序元素,獲得二元組的排序元素的順序。當(dāng)然,也可以將結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)的前面,此種情況下,在讀取拼接后的數(shù)組,進(jìn)行數(shù)據(jù)比對(duì)時(shí),需要先將排序元素和結(jié)果元素分離,再比對(duì)排序元素。s104、將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)。需要說(shuō)明的是,將每一個(gè)二元組的拼接后的數(shù)組放入數(shù)組進(jìn)行存儲(chǔ),也是將放入每一個(gè)二元組的拼接后的數(shù)組的數(shù)組存儲(chǔ)在內(nèi)存的空閑存儲(chǔ)區(qū)域中。并且,將放入每一個(gè)二元組的拼接后的數(shù)組的數(shù)組存儲(chǔ)在內(nèi)存的空閑存儲(chǔ)區(qū)域后,在對(duì)數(shù)組中的排序元素進(jìn)行排序時(shí),先從內(nèi)存的空閑存儲(chǔ)區(qū)域中讀取存儲(chǔ)的每一個(gè)二元組的拼接后的數(shù)組,并寫(xiě)入高速緩存,在高速緩存中比對(duì)所述每一個(gè)二元組的拼接后的數(shù)組中的排序元素的數(shù)據(jù)大小,得到排序元素的有序序列。可選地,本發(fā)明的另一實(shí)施例中,本步驟的具體實(shí)現(xiàn)方式可以為:將每一個(gè)二元組的拼接后的數(shù)組,按照所述二元組的指針的排序順序進(jìn)行存儲(chǔ)。需要說(shuō)明的是,將二元組的拼接后的數(shù)組,按照指針的排序順序存儲(chǔ),這樣,可以保證讀取二元組的拼接后的數(shù)組時(shí),直接以指針的排序順序讀取。續(xù)接上述實(shí)例,表一中,user1-user5指代的是二元組的指針,表中諸如user1的age的元素為對(duì)象類(lèi)型的元素,存儲(chǔ)二元組的拼接后的數(shù)組,可以按照user1-user5的順序進(jìn)行存儲(chǔ)。本發(fā)明實(shí)施例公開(kāi)的數(shù)據(jù)查詢方法中,用戶發(fā)送數(shù)據(jù)查詢指令后,解析該指令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,再將每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后數(shù)組,并進(jìn)行存儲(chǔ),可以保證依據(jù)數(shù)據(jù)查詢指令進(jìn)行操作時(shí),只要讀取二元組的排序元素和結(jié)果元素,避免了二元組的其他元素被讀取而占用高速緩存的空間,進(jìn)而解決了現(xiàn)有技術(shù)中存在因需要從內(nèi)存中讀取二元組的元素而導(dǎo)致的數(shù)據(jù)查詢操作效率低的問(wèn)題。本發(fā)明另一實(shí)施例公開(kāi)的數(shù)據(jù)查詢方法,參見(jiàn)圖2,包括步驟:s201、解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;s202、針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù);s203、分別將所述每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組;需要說(shuō)明的是,二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的類(lèi)型除了可以是字節(jié)類(lèi)型,即byte類(lèi)型外,還可以為:short、int、long、float以及double等。其中,若排序元素對(duì)應(yīng)的數(shù)據(jù)以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)不是byte類(lèi)型,則將排序元素對(duì)應(yīng)的數(shù)據(jù)以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成byte類(lèi)型,存儲(chǔ)時(shí)可以直接存儲(chǔ)在棧中。s204、針對(duì)所述每一個(gè)二元組,分別將所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組、以及所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組進(jìn)行拼接,獲得拼接后的數(shù)組;續(xù)接上述實(shí)施例中的實(shí)例,以u(píng)ser1為例進(jìn)行說(shuō)明,將二元組user1的排序元素對(duì)應(yīng)的數(shù)據(jù)user1的age,結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)user1的name,均進(jìn)行轉(zhuǎn)換,得到字節(jié)數(shù)組;再將轉(zhuǎn)換后的字節(jié)數(shù)組進(jìn)行拼接,得到拼接后的數(shù)組user1byte數(shù)組。s205、將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)。需要說(shuō)明的是,轉(zhuǎn)換字節(jié)數(shù)組后再拼接,形成的拼接后的數(shù)組進(jìn)行存儲(chǔ)時(shí),也是要直接存儲(chǔ)在棧中,這樣,在讀取拼接后的數(shù)組,執(zhí)行排序元素的對(duì)比時(shí),可以通過(guò)一次尋址直接得到。在上述實(shí)例中,將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ),形成的列表如表二所示。表二user1byte數(shù)組user2byte數(shù)組user3byte數(shù)組user4byte數(shù)組user5byte數(shù)組user6byte數(shù)組user7byte數(shù)組user8byte數(shù)組user9byte數(shù)組user10byte數(shù)組其中,表二中,每一個(gè)二元組的拼接后的數(shù)組在存儲(chǔ)時(shí)的順序,與按照二元組的指針的排序順序相同,均以由user1—user10。本發(fā)明另一實(shí)施例公開(kāi)的數(shù)據(jù)查詢方法,參見(jiàn)圖3,包括步驟:s301、解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;s302、判斷所述每一個(gè)二元組的結(jié)果元素是否滿足預(yù)設(shè)條件;其中,所述預(yù)設(shè)條件用于判斷二元組的結(jié)果元素是否占用較大的存儲(chǔ)空間??蛇x地,本發(fā)明的另一實(shí)施例中,本步驟的具體實(shí)現(xiàn)方式可以為:判斷所述每一個(gè)二元組的結(jié)果元素的數(shù)量是否超過(guò)第一預(yù)設(shè)閾值;或者,判斷所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否超過(guò)第二預(yù)設(shè)閾值。其中,若一個(gè)二元組的結(jié)果元素的數(shù)量較多,即將二元組按照一個(gè)排序元素排序后,需要按照排序的順序,讀取幾個(gè)結(jié)果元素,這樣,二元組的結(jié)果元素占用的空間會(huì)較大,說(shuō)明高速緩存會(huì)被分配較多的空間用于存儲(chǔ)結(jié)果元素。另外,若結(jié)果元素的數(shù)量不多,沒(méi)有超過(guò)預(yù)設(shè)閾值,但一個(gè)或者幾個(gè)結(jié)果元素的對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量較大,也會(huì)導(dǎo)致結(jié)果元素進(jìn)行存儲(chǔ)時(shí),需要占空較大的存儲(chǔ)空間,因此也需要設(shè)定預(yù)設(shè)閾值,來(lái)判斷每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否會(huì)占用較大的存儲(chǔ)空間。需要說(shuō)明的是,也可以結(jié)合結(jié)果元素的數(shù)量和數(shù)據(jù)量?jī)蓚€(gè)條件、來(lái)判斷二元組的結(jié)果元素是否滿足預(yù)設(shè)條件;具體的,判斷所述每一個(gè)二元組的結(jié)果元素的數(shù)量是否超過(guò)第一預(yù)設(shè)閾值、且每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否超過(guò)第二預(yù)設(shè)閾值。還需要說(shuō)明的是,可以根據(jù)實(shí)際的結(jié)果元素占用存儲(chǔ)空間的一般情況來(lái)設(shè)定上述的兩個(gè)預(yù)設(shè)閾值,來(lái)保證能夠判斷出數(shù)量超過(guò)第一預(yù)設(shè)閾值或者數(shù)據(jù)量超過(guò)第二預(yù)設(shè)閾值的結(jié)果元素進(jìn)行存儲(chǔ)時(shí),會(huì)需要較多的高速緩存空間。對(duì)判斷出滿足預(yù)設(shè)條件的二元組,執(zhí)行步驟s303;對(duì)判斷出不滿足預(yù)設(shè)條件的二元組,執(zhí)行步驟s304;s303、讀取所述二元組的結(jié)果元素的存儲(chǔ)地址和二元組的排序元素對(duì)應(yīng)的數(shù)據(jù);其中,所述二元組的結(jié)果元素存儲(chǔ)地址作為二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)。需要說(shuō)明的是,如果判斷出每一個(gè)二元組的結(jié)果元素滿足預(yù)設(shè)條件,說(shuō)明該二元組的結(jié)果元素會(huì)占用較大的存儲(chǔ)空間,若直接讀取該結(jié)果元素到高速緩存,會(huì)占用較大的空間,使高速緩存的空間不能被有效利用。因此,讀取二元組的結(jié)果元素的存儲(chǔ)地址,作為結(jié)果元素的對(duì)應(yīng)的數(shù)據(jù)。s304、讀取所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)和二元組的排序元素對(duì)應(yīng)的數(shù)據(jù);s305、分別將所述每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組;s306、針對(duì)所述每一個(gè)二元組,分別將所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組、以及所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組;s307、將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)。本發(fā)明另一實(shí)施例還公開(kāi)了一種數(shù)據(jù)查詢裝置,如圖4所示,包括:解析單元401,用于解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素;讀取單元402,用于針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù);拼接單元403,用于將所述讀取得到的每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組;存儲(chǔ)單元404,用于將每一個(gè)二元組的拼接后的數(shù)組均放入數(shù)組進(jìn)行存儲(chǔ)。需要說(shuō)明的是,本發(fā)明實(shí)施例公開(kāi)的數(shù)據(jù)查詢裝置中,用戶發(fā)送數(shù)據(jù)查詢指令后,所述解析單元解析該指令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,再由所述拼接單元將每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)、以及結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)進(jìn)行拼接,獲得拼接后數(shù)組,并由存儲(chǔ)單元進(jìn)行存儲(chǔ),可以保證依據(jù)數(shù)據(jù)查詢指令進(jìn)行操作時(shí),只要讀取二元組的排序元素和結(jié)果元素,避免了二元組的其他元素被讀取而占用高速緩存的空間,進(jìn)而解決了現(xiàn)有技術(shù)中存在因需要從內(nèi)存中讀取二元組的元素而導(dǎo)致的數(shù)據(jù)查詢操作效率低的問(wèn)題。還需要說(shuō)明的是,本實(shí)施例中各個(gè)單元的具體工作過(guò)程,可以參見(jiàn)對(duì)應(yīng)圖1的方法實(shí)施例的內(nèi)容,此處不再贅述。可選地,本發(fā)明另一實(shí)施例中,參見(jiàn)圖5,所述數(shù)據(jù)查詢裝置除包括:解析單元501、讀取單元502、第一拼接單元503、存儲(chǔ)單元504以外,還包括:轉(zhuǎn)換單元505,用于在針對(duì)所述每一個(gè)二元組,分別讀取所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)之后,分別將所述每一個(gè)二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)和結(jié)果元素對(duì)應(yīng)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組;其中,第一拼接單元503,用于針對(duì)所述每一個(gè)二元組,分別將所述二元組的排序元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組、以及所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成的字節(jié)數(shù)組據(jù)進(jìn)行拼接,獲得拼接后的數(shù)組。需要說(shuō)明的是,本實(shí)施例中各個(gè)單元的具體工作過(guò)程,可以參見(jiàn)對(duì)應(yīng)圖2的方法實(shí)施例的內(nèi)容,此處不再贅述??蛇x地,本發(fā)明另一實(shí)施例中,所述拼接單元,包括:第二拼接單元,用于將所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)拼接到排序元素對(duì)應(yīng)的數(shù)據(jù)的后面。可選地,本發(fā)明另一實(shí)施例中,所述存儲(chǔ)單元,包括:第一存儲(chǔ)單元,用于將每一個(gè)二元組的拼接后的數(shù)組,按照所述二元組的指針的排序順序進(jìn)行存儲(chǔ)。需要說(shuō)明的是,上述兩個(gè)實(shí)施例中各個(gè)單元的具體工作過(guò)程,可以參見(jiàn)對(duì)應(yīng)圖1的方法實(shí)施例中,優(yōu)選實(shí)施例的內(nèi)容,此處不再贅述??蛇x地,本發(fā)明另一實(shí)施例中,所述解析數(shù)據(jù)查詢命令,獲得所述數(shù)據(jù)查詢命令包含的多個(gè)二元組、以及每一個(gè)二元組的排序元素和結(jié)果元素,之后,還包括:判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素是否滿足預(yù)設(shè)條件;若所述判斷單元判斷出二元組的結(jié)果元素滿足預(yù)設(shè)條件,所述讀取單元包括:第一讀取單元,用于讀取所述二元組的結(jié)果元素的存儲(chǔ)地址;若所述判斷單元判斷出二元組的結(jié)果元素不滿足預(yù)設(shè)條件,則所述判斷單元執(zhí)行讀取所述二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)??蛇x地,本發(fā)明另一實(shí)施例中,所述判斷單元,包括:第一判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素的數(shù)量是否超過(guò)第一預(yù)設(shè)閾值;第二判斷單元,用于判斷所述每一個(gè)二元組的結(jié)果元素對(duì)應(yīng)的數(shù)據(jù)的數(shù)據(jù)量是否超過(guò)第二預(yù)設(shè)閾值。需要說(shuō)明的是,上述兩個(gè)實(shí)施例中各個(gè)單元的具體工作過(guò)程,可以參見(jiàn)對(duì)應(yīng)圖3的方法實(shí)施例中的內(nèi)容,此處不再贅述。專(zhuān)業(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。當(dāng)前第1頁(yè)12