一種表間關(guān)聯(lián)查詢方法和裝置的制造方法
【專利說明】一種表間關(guān)聯(lián)查詢方法和裝置 技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種表間關(guān)聯(lián)查詢方法和裝置。 【背景技術(shù)】
[0002] 在數(shù)據(jù)倉庫與在線聯(lián)機(jī)分析處理(OLAP)領(lǐng)域,查詢的快速響應(yīng)尤為重要,在OLAP 領(lǐng)域,查詢需要處理G級、T級甚至P級的數(shù)據(jù)量,在如此大數(shù)據(jù)量的情況下,要求查詢的 快速響應(yīng),對數(shù)據(jù)庫處理性能提出很大挑戰(zhàn),在大量的查詢語句中,都會包含兩表間的關(guān)聯(lián) join操作,并且占據(jù)了主要的查詢時間,因此提升表間關(guān)聯(lián)查詢速度對數(shù)據(jù)庫查詢性能尤 為重要。
[0003] 現(xiàn)有技術(shù)中,有如下兩種表間關(guān)聯(lián)查詢的方向:
[0004] 第一,分別在兩表中根據(jù)選擇條件進(jìn)行查詢,最后對選擇后的結(jié)果進(jìn)行join操 作;
[0005] 第二,首先根據(jù)第一表中的選擇條件在第一表中進(jìn)行查詢獲得第一結(jié)果,接著將 第一結(jié)果與第二表進(jìn)行join操作,然后在join操作結(jié)果上根據(jù)第二表中的選擇條件進(jìn)行 查詢,獲得第二結(jié)果,最后將第一結(jié)果與第二結(jié)果進(jìn)行join操作,更新第一結(jié)果。
[0006] 由于上述兩種表間查詢的方向中均涉及至少一次join操作,而join操作需要對 表進(jìn)行遍歷,因此消耗時間較大,雖然現(xiàn)有技術(shù)中針對第二方向提出了一些改進(jìn)方案,例如 【具體實施方式】部分的示例,但是由于仍存在至少一次join操作,因此消耗時間仍然較大, 降低了表間關(guān)聯(lián)查詢的速度,影響了查詢性能。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的實施例提供一種表間關(guān)聯(lián)查詢方法和裝置,能夠減小表間關(guān)聯(lián)查詢的時 間,提高表間關(guān)聯(lián)查詢的速度。
[0008] 為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0009] 第一方面,提供一種表間關(guān)聯(lián)查詢方法,所述方法包括:
[0010] 獲取查詢指示消息,所述查詢指示消息攜帶第一查詢條件,指示根據(jù)所述第一查 詢條件在N個表中獲取第一查詢結(jié)果,其中,所述第一查詢條件包括:所述N個表中每個表 內(nèi)的選擇條件、以及所述N個表中第M表的主鍵值與第M+1表的外鍵值之間的關(guān)聯(lián)關(guān)系, 1彡M彡N-1,為整數(shù),所述第一表至所述第N表為所述N個表中由小至大排序的表;
[0011] 根據(jù)所述第一查詢條件中所述N個表中第M表的主鍵值與第M+1表的外鍵值之間 的關(guān)聯(lián)關(guān)系,建立所述第M表與所述第M+1表的第M對應(yīng)關(guān)系,所述第M對應(yīng)關(guān)系中包含第 M標(biāo)識的信息、與所述第M標(biāo)識相對應(yīng)的第M+1標(biāo)識的信息、所述第M標(biāo)識對應(yīng)所述第M+1 標(biāo)識的次數(shù),其中,所述第M標(biāo)識為所述第M表中的表項序號,所述第M+1標(biāo)識為所述第M+1 表中的表項序號;
[0012] 根據(jù)所述第一查詢條件中所述N個表中每個表內(nèi)的選擇條件,以及所述第M對應(yīng) 關(guān)系中所述第M標(biāo)識對應(yīng)所述第M+1標(biāo)識的次數(shù),獲取所述第一查詢結(jié)果。
[0013] 在第一方面第一種可能的實現(xiàn)方式中,結(jié)合第一方面,所述根據(jù)所述第一查詢條 件中所述N個表中每個表內(nèi)的選擇條件,以及所述第M對應(yīng)關(guān)系中所述第M標(biāo)識對應(yīng)所述 第M+1標(biāo)識的次數(shù),獲取所述第一查詢結(jié)果包括:
[0014] 根據(jù)所述第一查詢條件中第一表內(nèi)的選擇條件,查詢所述第一表,并獲得第一集 合,其中,所述第一集合中包含滿足所述第一表內(nèi)的選擇條件的表項的第一標(biāo)識;
[0015] 根據(jù)M的取值,循環(huán)執(zhí)行步驟S1-S3,直至M的取值全部執(zhí)行完畢:
[0016] S1、根據(jù)所述第M對應(yīng)關(guān)系和第2M-1集合,確定第2M集合,以及所述第2M-1集合 中的每個第M標(biāo)識對應(yīng)所述第2M集合中的第M+1標(biāo)識的次數(shù)TM,其中,所述第2M集合中包 含與所述第2M-1集合中的第M標(biāo)識相對應(yīng)的第M+1標(biāo)識;
[0017] S2、根據(jù)所述第一查詢條件中的第M+1表內(nèi)的選擇條件,查詢第M+1表內(nèi)第2M集 合中的第M+1標(biāo)識對應(yīng)的表項,并獲取第2M+1集合,其中,所述第2M+1集合中包含滿足所 述第M+1表內(nèi)選擇條件的表項的第M+1標(biāo)識;
[0018] S3、根據(jù)所述第2M+1集合,更新所述TM;
[0019] 根據(jù)所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,獲取所述第一查 詢結(jié)果。
[0020] 在第一方面第二種可能的實現(xiàn)方式中,結(jié)合第一方面第一種可能的實現(xiàn)方式,所 述根據(jù)所述第2M-1集合、所述第2M+1集合、以及所述更新后的TM,獲取所述第一查詢結(jié)果 包括:
[0021] 若N=2,根據(jù)所述第一集合,所述第三集合,以及所述更新后的T1,獲取所述第一 查詢結(jié)果;
[0022] 若N> 2,根據(jù)K的取值,循環(huán)執(zhí)行步驟L1,直至K的取值全部執(zhí)行完畢,其中, 2彡K彡N-1,為整數(shù):
[0023] Ll、根據(jù)第K結(jié)果,所述更新后的TK以及所述更新后的T(K-I),獲取第K+1結(jié)果, 其中,第二結(jié)果為初始化值0,所述第K+1結(jié)果中包含所述第2 (K-i)-1集合中每個第K-i 標(biāo)識對應(yīng)所述第2K集合中的第K+1標(biāo)識的次數(shù),其中,1彡i彡K-I,為整數(shù);
[0024] 根據(jù)第N結(jié)果,所述更新后的T(N-I)以及所述第2M-1集合、所述第2M+1集合, 獲取所述第一查詢結(jié)果。
[0025] 在第一方面第三種可能的實現(xiàn)方式中,結(jié)合第一方面,所述根據(jù)所述第一查詢條 件中所述N個表中每個表內(nèi)的選擇條件,以及所述第M對應(yīng)關(guān)系中所述第M標(biāo)識對應(yīng)所述 第M+1標(biāo)識的次數(shù),獲取所述第一查詢結(jié)果包括:
[0026] 根據(jù)所述第一查詢條件中第一表內(nèi)的選擇條件,查詢所述第一表,并獲得第一集 合,其中,所述第一集合中包含滿足所述第一表內(nèi)的選擇條件的表項的第一標(biāo)識;
[0027] 根據(jù)M的取值,循環(huán)執(zhí)行步驟S1-S4,直至M的取值全部執(zhí)行完畢:
[0028] S1、根據(jù)所述第M對應(yīng)關(guān)系和第3M-2集合,確定第3M-1集合,以及所述第3M-2集 合中的每個第M標(biāo)識對應(yīng)所述第3M-1集合中的第M+1標(biāo)識的次數(shù)TM,其中,所述第3M-1集 合中包含與所述第3M-2集合中的第M標(biāo)識相對應(yīng)的第M+1標(biāo)識;
[0029] S2、根據(jù)所述第一查詢條件中的第M+1表內(nèi)的選擇條件,查詢第M+1表,并獲取第 3M集合,其中,所述第3M集合中包含滿足所述第M+1表內(nèi)選擇條件的表項的第M+1標(biāo)識;
[0030] S3、根據(jù)所述第3M-1集合和所述第3M集合,獲取第3M+1集合,其中,所述第3M+1 集合包含滿足所述第M+1表內(nèi)選擇條件且對應(yīng)第M標(biāo)識的表項滿足所述第M表內(nèi)選擇條件 的表項的第M+1標(biāo)識;
[0031] S4、根據(jù)所述第3M+1集合,更新所述TM;
[0032] 根據(jù)所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,獲取所述第一查詢 結(jié)果。
[0033] 在第一方面第四種可能的實現(xiàn)方式中,結(jié)合第一方面第三種可能的實現(xiàn)方式,所 述根據(jù)所述第3M-2集合、所述第3M+1集合以及所述更新后的TM,獲取所述第一查詢結(jié)果包 括:
[0034] 若N=2,根據(jù)所述第一集合,所述第四集合,以及所述更新后的T1,獲取所述第一 查詢結(jié)果;
[0035] 若N> 2,根據(jù)K的取值,循環(huán)執(zhí)行步驟L1,直至K的取值全部執(zhí)行完畢,其中, 2彡K彡N-1,為整數(shù):
[0036]Ll、根據(jù)第K結(jié)果,所述更新后的TK以及所述更新后的T(K-I),獲取第K+1結(jié)果, 其中,第二結(jié)果為初始化值0,所述第K+1結(jié)果中包含所述第3 (K-i)-2集合中每個第K-i 標(biāo)識對應(yīng)所述第3K-1集合中的第K+1標(biāo)識的次數(shù),其中,1彡i彡K-I,為整數(shù);
[0037] 根據(jù)第N結(jié)果,所述更新后的T(N-I)以及所述第3M-2集合、所述第3M+1集合, 獲取所述第一查詢結(jié)果。
[0038] 在第一方面第五種可能的實現(xiàn)方式中,結(jié)合第一方面至第一方面第四種可能的實 現(xiàn)方式,所述第M對應(yīng)關(guān)系包括:
[0039] 所述第M標(biāo)識與所述第M標(biāo)識對應(yīng)所述第M+1標(biāo)識的次數(shù)的對應(yīng)關(guān)系、所述第M+1 標(biāo)識與所述第M標(biāo)識對應(yīng)的主鍵值的哈希鏈表。
[0040] 在第一方面第六種可能的實現(xiàn)方式中,結(jié)合第一方面至第一方面第四種可能的實 現(xiàn)方式,在所述根據(jù)所述第一查詢條件中所述N個表中第M表的主鍵值與第M+1表的外鍵 值之間的關(guān)聯(lián)關(guān)系,建立所述第M表與所述第M+1表的第M對應(yīng)關(guān)系之前,還包括:
[0041] 確定所述第M+1表中外鍵值相同的表項的第M+1標(biāo)識是否連續(xù);
[0042] 若所述第M+1表中外鍵值相同的表項的第M+1標(biāo)識不連續(xù),對所述第M+1表中的 表項進(jìn)行排序,以使得所述第M+1表中外鍵值相同的表項的第M+1標(biāo)識連續(xù);
[0043] 所述第M對應(yīng)關(guān)系包括: