本文作者:kaifamei

一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)及電子設(shè)備與流程

更新時間:2025-12-26 01:47:29 0條評論

一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)及電子設(shè)備與流程



1.本說明書涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)及電子設(shè)備。


背景技術(shù):



2.隨著科技的發(fā)展,數(shù)據(jù)庫得到了廣泛的應(yīng)用。隨著數(shù)據(jù)庫廣泛應(yīng)用,數(shù)據(jù)庫中表內(nèi)存儲的隱私數(shù)據(jù)得到了越來越多的關(guān)注。
3.數(shù)據(jù)庫中的表存儲著不同的信息,當(dāng)想要查詢某一信息時,生成的該查詢語句的執(zhí)行計劃可能是先將包含這一信息的多張表進行連接之后再進行查詢,數(shù)據(jù)庫中的表之間的連接方式有很多種,比如內(nèi)連接、外連接和交叉連接等。每張表之間的連接方式可能相同,也可能不同。并且,在查詢時,可能查詢的是數(shù)據(jù)庫中某一信息的全部數(shù)據(jù)行,也可能只查詢數(shù)據(jù)庫中某一行或者某些行的數(shù)據(jù)。在當(dāng)只查詢數(shù)據(jù)庫中某一行或者某些行的數(shù)據(jù)時,生成的該查詢語句的執(zhí)行計劃是需要先將多張表進行連接,得到多張表的連接結(jié)果,再根據(jù)查詢語句中的輸出限制條件輸出結(jié)果。但在執(zhí)行計劃時,需要先進行多張表的連接計算,再根據(jù)輸出限制條件輸出結(jié)果,這會導(dǎo)致在對多張表進行連接計算時可能會存在大量的無效數(shù)據(jù)的計算,會使查詢的速度低,從而會降低查詢的性能。
4.因此,如何進行高效的數(shù)據(jù)查詢是一個亟待解決的問題。


技術(shù)實現(xiàn)要素:



5.本說明書提供一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)及電子設(shè)備,以部分的解決現(xiàn)有技術(shù)存在的上述問題。
6.本說明書采用下述技術(shù)方案:
7.本說明書提供一種數(shù)據(jù)查詢的方法,包括:
8.獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件;
9.確定各表標(biāo)識對應(yīng)的表,作為待查詢表;
10.根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表;
11.根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表;
12.根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。
13.可選地,所述連接包括外連接;
14.根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表,具體包括:
15.將由各待查詢表構(gòu)成的集合作為待查詢表集;
16.根據(jù)所述各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集;
17.針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢
表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
18.可選地,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件進行連接,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表,具體包括:
19.根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換;
20.根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
21.可選地,所述輸出限制條件包括第一類條件和第二類條件;
22.當(dāng)所述輸出限制條件為第一類條件時,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表,具體包括:
23.確定所述第一類條件中輸出結(jié)果數(shù)量,在所述驅(qū)動表中篩選所述輸出結(jié)果數(shù)量的數(shù)據(jù),確定以所述輸出結(jié)果數(shù)量的數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表;
24.當(dāng)所述輸出限制條件為第二類條件時,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表,具體包括:
25.確定所述第二類條件中數(shù)據(jù)起始位置以及偏移量n,按所述驅(qū)動表中各數(shù)據(jù)的排序,在所述驅(qū)動表中篩選排序在所述數(shù)據(jù)起始位置之后的n個數(shù)據(jù),確定以所述n個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表,其中n為正整數(shù)。
26.可選地,若所述輸出限制條件為第二類條件,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,具體包括:
27.確定所述驅(qū)動表和所述非驅(qū)動表之間的連接條件中包含的連接字段;
28.當(dāng)所述連接字段在所述非驅(qū)動表中具有唯一約束,且劃分出的待查詢表子集與所述待查詢表集相同時,根據(jù)所述第二類條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。
29.可選地,針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,具體包括:
30.針對各待查詢表子集,構(gòu)建以該待查詢表子集中包含的表為節(jié)點、以該待查詢表子集中包含的表之間的連接條件為邊的該待查詢表子集對應(yīng)的連通圖;
31.確定所述連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表為該待查詢表子集中除外連接以外的表。
32.可選地,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集,具體包括:
33.以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對所述待查詢表集進行劃分,得到待查詢表子集,其中,不同的待查詢表子集之間不具有交集。
34.本說明書提供了一種數(shù)據(jù)查詢的裝置,包括:
35.獲取模塊,用于獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件;
36.確定模塊,用于確定各表標(biāo)識對應(yīng)的表,作為待查詢表;
37.連接模塊,用于根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表;
38.限制模塊,用于根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表;
39.輸出模塊,根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。
40.可選地,所述連接包括外連接;
41.所述連接模塊具體用于,將由各待查詢表構(gòu)成的集合作為待查詢表集;根據(jù)所述各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集;針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
42.可選地,所述連接模塊具體用于,根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換;根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
43.可選地,所述輸出限制條件包括第一類條件和第二類條件;
44.當(dāng)所述輸出限制條件為第一類條件時,所述限制模塊具體用于,確定所述第一類條件中輸出結(jié)果數(shù)量,在所述驅(qū)動表中篩選所述輸出結(jié)果數(shù)量的數(shù)據(jù),確定以所述輸出結(jié)果數(shù)量的數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表;
45.當(dāng)所述輸出限制條件為第二類條件時,所述限制模塊具體用于,確定所述第二類條件中數(shù)據(jù)起始位置以及偏移量n,按所述驅(qū)動表中各數(shù)據(jù)的排序,在所述驅(qū)動表中篩選排序在所述數(shù)據(jù)起始位置之后的n個數(shù)據(jù),確定以所述n個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表,其中n為正整數(shù)。
46.可選地,若所述輸出限制條件為第二類條件,所述限制模塊具體用于,確定所述驅(qū)動表和所述非驅(qū)動表之間的連接條件中包含的連接字段;當(dāng)所述連接字段在所述非驅(qū)動表中具有唯一約束,且劃分出的待查詢表子集與所述待查詢表集相同時,根據(jù)所述第二類條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。
47.可選地,所述連接模塊具體用于,針對各待查詢表子集,構(gòu)建以該待查詢表子集中包含的表為節(jié)點、以該待查詢表子集中包含的表之間的連接條件為邊的該待查詢表子集對應(yīng)的連通圖;確定所述連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表為該待查詢表子集中除外連接以外的表。
48.可選地,所述連接模塊具體用于,以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對所述待查詢表集進行劃分,得到待查詢表子集,其中,不同的待查詢表子集之間不具有交集。
49.本說明書提供了一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述數(shù)據(jù)查詢的方法。
50.本說明書提供了一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)上述數(shù)據(jù)查詢的方法。
51.本說明書采用的上述至少一個技術(shù)方案能夠達到以下有益效果:
52.本說明書提供的數(shù)據(jù)查詢的方法中,根據(jù)獲取的查詢語句中攜帶的需要查詢的表標(biāo)識,確定表標(biāo)識所對應(yīng)的表,作為待查詢表,根據(jù)各待查詢表和各待查詢表之間的連接關(guān)
系,確定驅(qū)動表和非驅(qū)動表,根據(jù)查詢語句中攜帶的輸出限制條件,對驅(qū)動表進行限制處理,將進行限制處理后的驅(qū)動表和非驅(qū)動表進行連接,得到查詢語句對應(yīng)的查詢結(jié)果。
53.從上述方法中可以看出,本方法中在進行數(shù)據(jù)查詢時,根據(jù)查詢語句中的表標(biāo)識,確定待查詢的表,根據(jù)各待查詢表之間的連接關(guān)系,確定驅(qū)動表和非驅(qū)動表,以查詢語句中的輸出限制條件先對驅(qū)動表進行限制處理,再將限制后的驅(qū)動表與非驅(qū)動表進行連接,得到查詢語句對應(yīng)的查詢結(jié)果,使得連接過程的計算量減小,減少了無效數(shù)據(jù)的計算,加快了數(shù)據(jù)查詢的速度。
附圖說明
54.此處所說明的附圖用來提供對本說明書的進一步理解,構(gòu)成本說明書的一部分,本說明書的示意性實施例及其說明用于解釋本說明書,并不構(gòu)成對本說明書的不當(dāng)限定。在附
55.圖中:
56.圖1為本說明書中一種數(shù)據(jù)查詢的方法的流程示意圖;
57.圖2為本說明書中一種子集1對應(yīng)的連通圖;
58.圖3為本說明書提供的一種數(shù)據(jù)查詢的裝置的示意圖;
59.圖4為本說明書提供的對應(yīng)于圖1的電子設(shè)備示意圖。
具體實施方式
60.為使本說明書的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本說明書具體實施例及相應(yīng)的附圖對本說明書技術(shù)方案進行清楚、完整地描述。顯然,所描述的實施例僅是本說明書一部分實施例,而不是全部的實施例。基于本說明書中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本說明書保護的范圍。
61.本說明書的實施例提供了一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)及電子設(shè)備,以下結(jié)合附圖,詳細說明本說明書各實施例提供的技術(shù)方案。
62.圖1為本說明書中一種數(shù)據(jù)查詢的方法的流程示意圖,具體包括以下步驟:
63.s100:獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件。
64.在實際應(yīng)用場景中,用戶在進行數(shù)據(jù)查詢時,需要查詢的表可能會有多張,而各表之間的連接方式可能相同,也可能不同,比如查詢語句中各表的連接方式可能是外連接和內(nèi)連接的混合連接,不僅僅是單一的連接方式。
65.基于此,在本說明書中,用于執(zhí)行查詢語句的設(shè)備獲取查詢語句,其中,查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及查詢語句的輸出限制條件。上述執(zhí)行查詢語句的設(shè)備可以是需要查詢的表所在的服務(wù)端,或能夠執(zhí)行本說明書方案的諸如服務(wù)器、個人計算機(personal computer,pc)等設(shè)備。為了方便說明,下面以服務(wù)器為執(zhí)行主體進行說明。
66.查詢語句中攜帶的輸出限制條件是對查詢的輸出結(jié)果的限制,有兩種類型,一種是對輸出結(jié)果數(shù)量的限制,另一種是對數(shù)據(jù)起始位置和偏移量的限制,例如,假設(shè)查詢語句1為:
[0067][0068]
查詢語句1的意思為將以t1為主表,按照t1.c1=t2.c1條件與t2進行左外連接,再按照t1.c2=t3.c2條件與t3進行內(nèi)連接,得到的結(jié)果1,將以t4為主表,按照t4.c1=t5.c1條件與t5進行左外連接,再按照t4.c2=t6.c2條件與t6進行內(nèi)連接,得到的結(jié)果2,將結(jié)果1與結(jié)果2進行交叉連接得到最終要查詢的表,將該表中所有字段的前10個數(shù)據(jù)作為查詢結(jié)果輸出,其中,查詢語句1中的t1~6為表標(biāo)識,“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”和“t4 left join t5 on t4.c1=t5.c1,t6 where t4.c2=t6.c2”為連接條件,查詢語句1中的輸出限制條件為“l(fā)imit 10”,該輸出限制條件是對輸出結(jié)果數(shù)量的限制,表示的是對連接完成的表取前10個的數(shù)據(jù),由前10個的數(shù)據(jù)構(gòu)成的表作為查詢語句1的查詢結(jié)果。假設(shè)查詢語句2為:
[0069][0070][0071]
查詢語句2的意思為將以t1為主表,按照t1.c1=t2.c1條件與t2進行左外連接,再按照t1.c2=t3.c2條件與t3進行內(nèi)連接,將得到的結(jié)果從第10個數(shù)據(jù)開始輸出,輸出結(jié)果的數(shù)量為1,其中,查詢語句2中的t1~3為表標(biāo)識,“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”為連接條件,查詢語句2中的輸出限制條件為“l(fā)imit 10,1”,該輸出限制條件是對數(shù)據(jù)起始位置和偏移量的限制,表示的是對連接完成的表從第10個開始取1個的數(shù)據(jù),也就是取第11個的數(shù)據(jù),由第11個數(shù)據(jù)構(gòu)成的表作為查詢語句2的查詢結(jié)果。
[0072]
s102:確定各表標(biāo)識對應(yīng)的表,作為待查詢表。
[0073]
服務(wù)器確定各表標(biāo)識對應(yīng)的表,作為待查詢表,繼續(xù)沿用上例,查詢語句1中的表標(biāo)識為t1~6,根據(jù)各表標(biāo)識在數(shù)據(jù)庫中確定各表,表標(biāo)識t1~6分別對應(yīng)著數(shù)據(jù)庫中的表1
~6,將表1~6作為待查詢表。
[0074]
s104:根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表。
[0075]
服務(wù)器根據(jù)各待查詢表和各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表,其中,連接的方式可以有外連接、內(nèi)連接、交叉連接等多種方式,驅(qū)動表是表連接中的基礎(chǔ)表,在進行表連接時,以驅(qū)動表的數(shù)據(jù)作為循環(huán)的基礎(chǔ)數(shù)據(jù),然后以每一個基礎(chǔ)數(shù)據(jù)為篩選條件在非驅(qū)動表中篩選數(shù)據(jù)。
[0076]
具體的,各待查詢表之間的連接方式包括外連接,可以根據(jù)預(yù)設(shè)的變換策略,對待查詢表之間的連接條件進行等價變換,根據(jù)除外連接以外的待查詢表之間的變換后的連接條件,將除外連接以外的待查詢表進行連接,得到驅(qū)動表。其中,預(yù)設(shè)的變換策略是根據(jù)關(guān)系代數(shù)等價變換的原則進行預(yù)設(shè)的,要保證以變換后的連接條件進行連接得到的表與以未進行變換的連接條件進行連接得到的表相同。繼續(xù)沿用上例,查詢語句1中的連接方式有內(nèi)連接和外連接兩種連接方式,按照預(yù)設(shè)的變換策略,對查詢語句1中的表1~6之間的連接條件進行等價變換,查詢語句1中表1先與表2外連接,再與表3內(nèi)連接,經(jīng)過變換策略變換后表1先與表3內(nèi)連接,再與表2外連接,即變換后的連接條件為“t1 inner join t3 on t1.c2=t3.c2 left join t2 on t1.c1=t2.c1”,根據(jù)變換后的連接條件,將除外連接以外的表進行連接,也就是將表1和表3進行內(nèi)連接,將得到的表作為驅(qū)動表1,通過上例方式,將表4~6按照同樣的方式進行連接,得到驅(qū)動表2。同時,從待查詢表中確定出非驅(qū)動表,非驅(qū)動表為表2和表5。
[0077]
進一步的,為了方便得到驅(qū)動表,可以將由各待查詢表構(gòu)成的集合作為待查詢表集,根據(jù)各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將待查詢表集進行劃分,得到待查詢表子集,針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。其中,在采用預(yù)設(shè)的劃分策略對待查詢表集進行劃分時,以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對待查詢表集進行劃分,得到待查詢表子集,不同的待查詢表子集之間不具有交集。若根據(jù)預(yù)設(shè)的劃分策略,待查詢表集不可以劃分為至少兩個待查詢表子集時,直接將待查詢表集作為待查詢表子集。
[0078]
繼續(xù)沿用步驟s102中的例子,查詢語句1中的連接方式有內(nèi)連接和外連接兩種連接方式,將由表1~6構(gòu)成的集合作為待查詢表集,根據(jù)各待查詢表(即表1~6)之間的連接條件,以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對待查詢表集進行劃分,表1與表2之間的連接是外連接,與表3之間連接是內(nèi)連接,但是與表4~6之間沒有連接,也沒有連接條件,而且表4與表5之間的連接是外連接,與表6之間連接是內(nèi)連接,故將待查詢表集可以劃分為兩個待查詢表子集,即子集1和子集2,子集1中包含的表有表1~3,子集1內(nèi)的表之間的連接條件為“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”,子集2中包含的表有表4~6,子集2內(nèi)的表之間的連接條件為“t4 left join t5 on t4.c1=t5.c1,t6 where t4.c2=t6.c2”,子集1和子集2之間沒有交集。
[0079]
在得到各待查詢表子集之后,針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換,根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表
子集中除外連接以外的表進行連接,得到驅(qū)動表。
[0080]
繼續(xù)沿用上例,針對子集1,按照預(yù)設(shè)的變換策略,對子集1中的表1~3之間的連接條件進行等價變換,子集1中表1先與表2外連接,再與表3內(nèi)連接,經(jīng)過變換策略變換后表1先與表3內(nèi)連接,再與表2外連接,即變換后的連接條件為“t1 inner join t3 on t1.c2=t3.c2 left join t2 on t1.c1=t2.c1”,根據(jù)變換后的連接條件,將除外連接以外的表進行連接,也就是將表1和表3進行內(nèi)連接,將得到的表作為驅(qū)動表1,通過上例方式,將子集2按照同樣的方式進行連接,得到驅(qū)動表2。同時,從每個子集中確定出非驅(qū)動表,子集1中非驅(qū)動表為表2,子集2中非驅(qū)動表為表5。
[0081]
s106:根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。
[0082]
服務(wù)器根據(jù)輸出限制條件,對驅(qū)動表進行限制處理,得到限制后的驅(qū)動表,其中,輸出限制條件包括第一類條件和第二類條件。
[0083]
具體的,服務(wù)器確定查詢語句中的輸出限制條件,當(dāng)輸出限制條件為第一類條件時,需要確定第一類條件中輸出結(jié)果數(shù)量,在驅(qū)動表中篩選輸出結(jié)果數(shù)量的數(shù)據(jù),確定以輸出結(jié)果數(shù)量的數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表。當(dāng)輸出限制條件為第二類條件時,確定驅(qū)動表和非驅(qū)動表之間的連接條件中包含的連接字段,判斷連接字段在非驅(qū)動表中是否具有唯一約束,且劃分出的待查詢表子集與待查詢表集是否相同。當(dāng)連接字段在非驅(qū)動表中具有唯一約束,且劃分出的待查詢表子集與待查詢表集相同時,確定第二類條件中數(shù)據(jù)起始位置以及偏移量n,按驅(qū)動表中各數(shù)據(jù)的排序,在驅(qū)動表中篩選排序在數(shù)據(jù)起始位置之后的n個數(shù)據(jù),確定以n個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表,其中,n為正整數(shù),在表中被設(shè)置唯一約束的字段里的數(shù)據(jù)具有唯一性,不能重復(fù)出現(xiàn),即,如果上述連接字段在非驅(qū)動表中為主鍵,則上述連接字段具有唯一約束,否則,需要判斷上述連接字段在非驅(qū)動表中是否出現(xiàn)過兩次以上,若是,則上述連接字段不具有唯一約束,否則,上述連接字段具有唯一約束。
[0084]
繼續(xù)沿用上例,查詢語句1中的輸出限制條件為“l(fā)imit 10”,該輸出限制條件為第一類條件,確定第一類條件中輸出結(jié)果數(shù)量為10,在驅(qū)動表1中篩選10個數(shù)據(jù),確定由篩選出的10個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表1。按照同樣的方式對驅(qū)動表2進行限制,得到限制后的驅(qū)動表2。
[0085]
再假設(shè)查詢語句2中字段c1在表2中為具有唯一約束的字段,并將查詢語句2按照步驟s102~s104中的例子進行處理,在步驟s104中得到的驅(qū)動表為驅(qū)動表3,查詢語句2中的輸出限制條件為“l(fā)imit 10,1”,該輸出限制條件為第二類條件,確定驅(qū)動表3和非驅(qū)動表(即表2)之間的連接條件中包含的連接字段,也就是字段c1,判斷字段c1在表2中是否具有唯一約束,且劃分出的待查詢表子集與待查詢表集是否相同。字段c1在表2中具有唯一約束,且劃分出的待查詢表子集與待查詢表集相同,需要確定輸出限制條件(即“l(fā)imit10,1”)中數(shù)據(jù)起始位置以及偏移量n,即數(shù)據(jù)起始位置為10,偏移量為1,按驅(qū)動表3中各數(shù)據(jù)的排序,在驅(qū)動表3中篩選排序在第10個數(shù)據(jù)之后的1個數(shù)據(jù),確定以篩選出的數(shù)據(jù)(即驅(qū)動表3中第11個數(shù)據(jù))構(gòu)成的表,作為限制后的驅(qū)動表3。
[0086]
s108:根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。
[0087]
服務(wù)器根據(jù)各待查詢表之間的連接條件,將非驅(qū)動表和限制后的驅(qū)動表進行連接,得到查詢語句對應(yīng)的查詢結(jié)果。繼續(xù)沿用上例,對于查詢語句1,根據(jù)表2與限制后的驅(qū)動表1之間的連接條件,將表2與限制后的驅(qū)動表1進行連接,得到第一連接結(jié)果。根據(jù)表5與限制后的驅(qū)動表2之間的連接條件,將表5與限制后的驅(qū)動表2進行連接,得到第二連接結(jié)果,將第一連接結(jié)果與第二連接結(jié)果進行交叉連接,對進行交叉連接后的連接結(jié)果進行限制,得到查詢語句1對應(yīng)的查詢結(jié)果。而對于查詢語句2,根據(jù)表2與限制后的驅(qū)動表3之間的連接條件,將表2與限制后的驅(qū)動表3進行連接,得到查詢語句2對應(yīng)的查詢結(jié)果。
[0088]
一般情況下在進行數(shù)據(jù)查詢時,先根據(jù)查詢語句中的表標(biāo)識確定待查詢表,按照各待查詢表之間的連接條件,將各待查詢表進行連接,再將得到的連接結(jié)果根據(jù)輸出限制條件進行處理,將處理后的結(jié)果作為查詢結(jié)果輸出,但本方法中在進行數(shù)據(jù)查詢時,根據(jù)查詢語句中的表標(biāo)識確定待查詢表,采用預(yù)設(shè)的劃分策略將由各待查詢表構(gòu)成的待查詢表集進行劃分,得到各待查詢表子集,根據(jù)待查詢表子集中各待查詢表之間的連接關(guān)系,采用預(yù)設(shè)的變換策略進行變換,根據(jù)變換后的連接條件,將待查詢表子集中除外連接之外的表進行連接得到驅(qū)動表。確定查詢語句中的輸出限制條件,根據(jù)非驅(qū)動表的連接字段和待查詢子集的數(shù)量進行判斷是否可以對驅(qū)動表進行限制處理。將限制后的驅(qū)動表與非驅(qū)動表進行連接,得到查詢語句的查詢結(jié)果。通過采用預(yù)設(shè)的變換策略,對各待查詢表之間的連接關(guān)系進行變換,將待查詢表中除外連接之外的表進行連接的方式得到可以進行限制處理的驅(qū)動表,從而可以先對驅(qū)動表進行限制處理,再進行與非驅(qū)動表連接的方式,可以減少無效數(shù)據(jù)的計算,加快查詢速度。
[0089]
繼續(xù)沿用上例,假設(shè)表1~6中均包含20個數(shù)據(jù)且每個表之間的數(shù)據(jù)均匹配,對于查詢語句1,在一般情況下是先根據(jù)表1~6之間的連接條件,將表1~6進行連接,在這個過程中需要將以主表中的20個數(shù)據(jù)為篩選條件對其他表進行篩選,尤其是在將結(jié)果1和結(jié)果2進行交叉連接時,需要進行非常大的計算,但是,本方法雖然在上述步驟s104中進行除外連接之外的連接時,將以主表中的20個數(shù)據(jù)為篩選條件對其他表進行篩選,得到了驅(qū)動表1和驅(qū)動表2,但在上述步驟s106中,對驅(qū)動表1和驅(qū)動表2進行了限制處理,限制后的驅(qū)動表1和驅(qū)動表2中均只包含10個數(shù)據(jù),再將驅(qū)動表與非驅(qū)動表進行外連接,將得到的結(jié)果進行交叉連接,本方法在外連接和后續(xù)的交叉連接中均是以10個數(shù)據(jù)進行篩選條件進行篩選的,相對于一般情況來說減少了大量的計算,加快了查詢的速度。
[0090]
對于查詢語句2,在一般情況下是先根據(jù)表1~3之間的連接條件,將表1~3進行連接,在這個過程中需要將以主表中的20個數(shù)據(jù)為篩選條件對其他表進行篩選,將連接后的包含20個數(shù)據(jù)的結(jié)果從從第10個數(shù)據(jù)開始輸出,輸出結(jié)果的數(shù)量為1,也就是將第11個數(shù)據(jù)作為查詢結(jié)果,但是,本方法雖然在上述步驟s104中進行除外連接之外的連接時,將以主表中的20個數(shù)據(jù)為篩選條件對其他表進行篩選,得到了驅(qū)動表3,但在上述步驟s106中,對驅(qū)動表3進行了限制處理,限制后的驅(qū)動表3只包含1個數(shù)據(jù),再將驅(qū)動表3與表2進行外連接,直接將得到的結(jié)果作為查詢結(jié)果,本方法在進行外連接之前將驅(qū)動表進行限制處理,再以1個數(shù)據(jù)為篩選條件進行篩選的,直接得到查詢結(jié)果,相對于一般情況來說減少了大量的計算,加快了查詢的速度。
[0091]
上述方法步驟s104中,針對各待查詢表子集,在確定該待查詢表子集中除外連接以外的表時,可以構(gòu)建以該待查詢表子集中包含的表為節(jié)點、以該待查詢表子集中包含的
表之間的連接條件為邊的該待查詢表子集對應(yīng)的連通圖,確定連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表為該待查詢表子集中除外連接以外的表。結(jié)合上述方法步驟s104中的例子進行舉例,如圖2所示,圖2為本說明書中一種子集1對應(yīng)的連通圖,對于查詢語句1,有作為待查詢表子集的子集1和子集2,針對子集1,可以構(gòu)建以子集1中包含的表1~3作為節(jié)點,將子集1中包含的表之間的連接條件作為邊的連通圖,圖3中節(jié)點1包含的表為表1,節(jié)點2包含的表為表2,節(jié)點3中包含的表為表3,節(jié)點與節(jié)點間連接的邊上包含的是表之間的連接條件,對于表之間的連接條件在圖3的節(jié)點間連接的邊上就不再注明。確定連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表,也就是表1和表3,將表1和表3作為該待查詢表子集中除外連接以外的表。按照上述方法構(gòu)建子集2對應(yīng)的連通圖,根據(jù)連通圖確定子集2中除外連接以外的表,也就是表4和表6。
[0092]
基于創(chuàng)建的連通圖,在上述方法步驟s106中,可以在輸出限制條件為第二類條件時,確定驅(qū)動表和非驅(qū)動表之間的連接條件中包含的連接字段,判斷連接字段在非驅(qū)動表中是否具有唯一約束,且是否只有一個連通圖。當(dāng)連接字段在非驅(qū)動表中具有唯一約束,且只有一個連通圖時,可以根據(jù)第二類條件,對驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。
[0093]
本說明書中的執(zhí)行主體服務(wù)器中包含優(yōu)化器、執(zhí)行器等多個部件,其中的優(yōu)化器可以根據(jù)上述步驟s100~步驟s108的方法生成查詢語句對應(yīng)的執(zhí)行計劃,之后執(zhí)行器再根據(jù)優(yōu)化器生成的執(zhí)行計劃去進行數(shù)據(jù)查詢,得到查詢語句對應(yīng)的查詢結(jié)果。
[0094]
以上為本說明書的一個或多個實施例提供的數(shù)據(jù)查詢的方法,基于同樣的思路,本說明書還提供了相應(yīng)的數(shù)據(jù)查詢的裝置,如圖3所示。
[0095]
圖3為本說明書提供的一種數(shù)據(jù)查詢的裝置示意圖,具體包括:
[0096]
獲取模塊200,用于獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件;
[0097]
確定模塊202,用于確定各表標(biāo)識對應(yīng)的表,作為待查詢表;
[0098]
連接模塊204,用于根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表;
[0099]
限制模塊206,用于根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表;
[0100]
輸出模塊208,根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。
[0101]
可選地,所述連接包括外連接;
[0102]
所述連接模塊204具體用于,將由各待查詢表構(gòu)成的集合作為待查詢表集;根據(jù)所述各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集;針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
[0103]
可選地,所述連接模塊204具體用于,根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換;根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。
[0104]
可選地,所述輸出限制條件包括第一類條件和第二類條件;
language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)與verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現(xiàn)該邏輯方法流程的硬件電路。
[0113]
控制器可以按任何適當(dāng)?shù)姆绞綄崿F(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲可由該(微)處理器執(zhí)行的計算機可讀程序代碼(例如軟件或固件)的計算機可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(application specific integrated circuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存儲器控制器還可以被實現(xiàn)為存儲器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種硬件部件,而對其內(nèi)包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)。或者甚至,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
[0114]
上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機。具體的,計算機例如可以為個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。
[0115]
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當(dāng)然,在實施本說明書時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
[0116]
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0117]
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0118]
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0119]
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0120]
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0121]
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flash ram)。內(nèi)存是計算機可讀介質(zhì)的示例。
[0122]
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
[0123]
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個
……”
限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0124]
本領(lǐng)域技術(shù)人員應(yīng)明白,本說明書的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本說明書可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本說明書可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0125]
本說明書可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本說明書,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
[0126]
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
[0127]
以上所述僅為本說明書的實施例而已,并不用于限制本說明書。對于本領(lǐng)域技術(shù)人員來說,本說明書可以有各種更改和變化。凡在本說明書的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本說明書的權(quán)利要求范圍之內(nèi)。

技術(shù)特征:


1.一種數(shù)據(jù)查詢的方法,包括:獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件;確定各表標(biāo)識對應(yīng)的表,作為待查詢表;根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表;根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表;根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。2.如權(quán)利要求1所述的方法,所述連接包括外連接;根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表,具體包括:將由各待查詢表構(gòu)成的集合作為待查詢表集;根據(jù)所述各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集;針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。3.如權(quán)利要求2所述的方法,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件進行連接,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表,具體包括:根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換;根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。4.如權(quán)利要求2所述的方法,所述輸出限制條件包括第一類條件和第二類條件;當(dāng)所述輸出限制條件為第一類條件時,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表,具體包括:確定所述第一類條件中輸出結(jié)果數(shù)量,在所述驅(qū)動表中篩選所述輸出結(jié)果數(shù)量的數(shù)據(jù),確定以所述輸出結(jié)果數(shù)量的數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表;當(dāng)所述輸出限制條件為第二類條件時,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表,具體包括:確定所述第二類條件中數(shù)據(jù)起始位置以及偏移量n,按所述驅(qū)動表中各數(shù)據(jù)的排序,在所述驅(qū)動表中篩選排序在所述數(shù)據(jù)起始位置之后的n個數(shù)據(jù),確定以所述n個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表,其中n為正整數(shù)。5.如權(quán)利要求4所述的方法,若所述輸出限制條件為第二類條件,根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,具體包括:確定所述驅(qū)動表和所述非驅(qū)動表之間的連接條件中包含的連接字段;當(dāng)所述連接字段在所述非驅(qū)動表中具有唯一約束,且劃分出的待查詢表子集與所述待查詢表集相同時,根據(jù)所述第二類條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。6.如權(quán)利要求2所述的方法,針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,具體包括:
針對各待查詢表子集,構(gòu)建以該待查詢表子集中包含的表為節(jié)點、以該待查詢表子集中包含的表之間的連接條件為邊的該待查詢表子集對應(yīng)的連通圖;確定所述連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表為該待查詢表子集中除外連接以外的表。7.如權(quán)利要求2所述的方法,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集,具體包括:以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對所述待查詢表集進行劃分,得到待查詢表子集,其中,不同的待查詢表子集之間不具有交集。8.一種數(shù)據(jù)查詢的裝置,包括:獲取模塊,用于獲取查詢語句,其中,所述查詢語句中攜帶需要查詢的表標(biāo)識、所需查詢的表之間的連接條件以及所述查詢語句的輸出限制條件;確定模塊,用于確定各表標(biāo)識對應(yīng)的表,作為待查詢表;連接模塊,用于根據(jù)各待查詢表和所述各待查詢表之間的連接條件,確定驅(qū)動表和非驅(qū)動表;限制模塊,用于根據(jù)所述輸出限制條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表;輸出模塊,根據(jù)所述各待查詢表之間的連接條件,將所述非驅(qū)動表和限制后的驅(qū)動表進行連接,得到所述查詢語句對應(yīng)的查詢結(jié)果。9.如權(quán)利要求8所述的裝置,所述連接包括外連接;所述連接模塊具體用于,將由各待查詢表構(gòu)成的集合作為待查詢表集;根據(jù)所述各待查詢表之間的連接條件,采用預(yù)設(shè)的劃分策略,將所述待查詢表集進行劃分,得到待查詢表子集;針對各待查詢表子集,確定該待查詢表子集中除外連接以外的表,根據(jù)該待查詢表子集中除外連接以外的表之間的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。10.如權(quán)利要求9所述的裝置,所述連接模塊具體用于,根據(jù)預(yù)設(shè)的變換策略,對該待查詢表子集中各表之間的連接條件進行等價變換;根據(jù)該待查詢表子集中除外連接以外的表之間的變換后的連接條件,將該待查詢表子集中除外連接以外的表進行連接,得到驅(qū)動表。11.如權(quán)利要求9所述的裝置,所述輸出限制條件包括第一類條件和第二類條件;當(dāng)所述輸出限制條件為第一類條件時,所述限制模塊具體用于,確定所述第一類條件中輸出結(jié)果數(shù)量,在所述驅(qū)動表中篩選所述輸出結(jié)果數(shù)量的數(shù)據(jù),確定以所述輸出結(jié)果數(shù)量的數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表;當(dāng)所述輸出限制條件為第二類條件時,所述限制模塊具體用于,確定所述第二類條件中數(shù)據(jù)起始位置以及偏移量n,按所述驅(qū)動表中各數(shù)據(jù)的排序,在所述驅(qū)動表中篩選排序在所述數(shù)據(jù)起始位置之后的n個數(shù)據(jù),確定以所述n個數(shù)據(jù)構(gòu)成的表,作為限制后的驅(qū)動表,其中n為正整數(shù)。12.如權(quán)利要求11所述的裝置,若所述輸出限制條件為第二類條件,所述限制模塊具體用于,確定所述驅(qū)動表和所述非驅(qū)動表之間的連接條件中包含的連接字段;當(dāng)所述連接字段在所述非驅(qū)動表中具有唯一約束,且劃分出的待查詢表子集與所述待查詢表集相同時,根據(jù)所述第二類條件,對所述驅(qū)動表進行限制處理,得到限制后的驅(qū)動表。
13.如權(quán)利要求9所述的裝置,所述連接模塊具體用于,針對各待查詢表子集,構(gòu)建以該待查詢表子集中包含的表為節(jié)點、以該待查詢表子集中包含的表之間的連接條件為邊的該待查詢表子集對應(yīng)的連通圖;確定所述連通圖中除邊上的連接條件為外連接以外的節(jié)點中包含的表為該待查詢表子集中除外連接以外的表。14.如權(quán)利要求9所述的裝置,所述連接模塊具體用于,以將具有連接條件的表劃分至同一待查詢表子集的劃分方式,對所述待查詢表集進行劃分,得到待查詢表子集,其中,不同的待查詢表子集之間不具有交集。15.一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述權(quán)利要求1~7任一項所述的方法。16.一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)上述權(quán)利要求1~7任一項所述的方法。

技術(shù)總結(jié)


本說明書公開了一種數(shù)據(jù)查詢的方法、裝置、存儲介質(zhì)和電子設(shè)備,所述方法包括:根據(jù)獲取的查詢語句中攜帶的需要查詢的表標(biāo)識,確定表標(biāo)識所對應(yīng)的表,作為待查詢表,根據(jù)各待查詢表和各待查詢表之間的連接關(guān)系,確定驅(qū)動表和非驅(qū)動表,根據(jù)查詢語句中攜帶的輸出限制條件,對驅(qū)動表進行限制處理,將進行限制處理后的驅(qū)動表和非驅(qū)動表進行連接,得到查詢語句對應(yīng)的查詢結(jié)果。本方法中根據(jù)各待查詢表之間的連接關(guān)系,確定驅(qū)動表和非驅(qū)動表,以查詢語句中的輸出限制條件先對驅(qū)動表進行限制處理,再將限制后的驅(qū)動表與非驅(qū)動表進行連接,得到查詢語句對應(yīng)的查詢結(jié)果,使得連接過程的計算量減小,減少了無效數(shù)據(jù)的計算,加快了數(shù)據(jù)查詢的速度。的速度。的速度。


技術(shù)研發(fā)人員:

鄭振國 朱濤 王國平

受保護的技術(shù)使用者:

北京奧星貝斯科技有限公司

技術(shù)研發(fā)日:

2022.10.26

技術(shù)公布日:

2023/1/17


文章投稿或轉(zhuǎn)載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-75834-0.html

來源:專利查詢檢索下載-實用文體寫作網(wǎng)版權(quán)所有,轉(zhuǎn)載請保留出處。本站文章發(fā)布于 2023-01-24 23:31:16

發(fā)表評論

驗證碼:
用戶名: 密碼: 匿名發(fā)表
評論列表 (有 條評論
2人圍觀
參與討論