一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝置,其中,一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法包括:若請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表,則對請求查詢的數(shù)據(jù)進行分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在不同的查詢組中;對于每個查詢組,確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從所述數(shù)據(jù)庫查詢所述查詢組的數(shù)據(jù);將查詢到所有查詢組的數(shù)據(jù)進行合并,生成查詢結果。本發(fā)明提供的技術方案能夠有效減小數(shù)據(jù)庫的壓力,提高數(shù)據(jù)查詢的速度。
【專利說明】一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝置
【技術領域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫應用【技術領域】,具體涉及一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝 置。
【背景技術】
[0002] 數(shù)據(jù)庫是按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫,數(shù)據(jù)庫有很多種類型,例 如數(shù)據(jù)庫通常分為層次型數(shù)據(jù)庫、網(wǎng)狀型數(shù)據(jù)庫和關系型數(shù)據(jù)庫。
[0003] 在現(xiàn)有技術的數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)存儲在一個數(shù)據(jù)庫中,當用戶需要查詢數(shù)據(jù)時, 通過編寫構造化查詢語言(SQL, Structured Query Language)語句向數(shù)據(jù)庫系統(tǒng)發(fā)送查詢 請求,數(shù)據(jù)庫系統(tǒng)根據(jù)SQL語句從該數(shù)據(jù)庫中獲取相應的數(shù)據(jù)后合并,將合并后的數(shù)據(jù)返 回給用戶。
[0004] 在查詢單表數(shù)據(jù)時,通過現(xiàn)有技術的上述方案能夠較快地獲得需要查詢的數(shù)據(jù), 然而,隨著數(shù)據(jù)量的增長,數(shù)據(jù)庫中的數(shù)據(jù)關系也越來越復雜,一個數(shù)據(jù)查詢往往會涉及多 張數(shù)據(jù)表,而查詢邏輯會隨著需要查詢的數(shù)據(jù)表的數(shù)目的增多而變得越來越復雜,此時,通 過現(xiàn)有技術的上述方案查詢數(shù)據(jù)時,將對數(shù)據(jù)庫造成不小的壓力,同時,數(shù)據(jù)的查詢速度也 將受到影響。
【發(fā)明內容】
[0005] 本發(fā)明提供一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝置,用于減小數(shù)據(jù)庫的壓力,提 高數(shù)據(jù)查詢的速度。
[0006] 本發(fā)明第一方面提供一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法,應用于包含兩個以上數(shù)據(jù) 庫的數(shù)據(jù)庫系統(tǒng)中,上述數(shù)據(jù)查詢方法包括:
[0007] 若請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表,則對請求查詢的數(shù)據(jù)進行分組,將屬于 同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在不同的查詢組 中;
[0008] 對于每個查詢組,確定查詢上述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從上述數(shù)據(jù) 庫查詢上述查詢組的數(shù)據(jù);
[0009] 將查詢到所有查詢組的數(shù)據(jù)進行合并,生成查詢結果。
[0010] 本發(fā)明第二方面提供一種數(shù)據(jù)查詢裝置,應用于包含兩個以上數(shù)據(jù)庫的數(shù)據(jù)庫系 統(tǒng)中,上述數(shù)據(jù)庫查詢裝置包括:
[0011] 查詢拆分單元,用于當請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表時,對請求查詢的數(shù) 據(jù)進行分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù) 據(jù)在不同的查詢組中;
[0012] 確定單元,用于針對上述查詢拆分單元拆分的每個查詢組,確定查詢上述查詢組 的數(shù)據(jù)時對應使用的數(shù)據(jù)庫;
[0013] 查詢執(zhí)行單元,用于針對上述查詢拆分單元拆分的每個查詢組,從上述確定單元 確定的與查詢組對應的數(shù)據(jù)庫中,查詢上述查詢組的數(shù)據(jù);
[0014] 合并單元,用于將上述查詢執(zhí)行單元查詢到的所有查詢組的數(shù)據(jù)進行合并,生成 查詢結果。
[0015] 由上可見,本發(fā)明中的數(shù)據(jù)庫系統(tǒng)包含兩個以上的數(shù)據(jù)庫,在查詢數(shù)據(jù)時,對請求 查詢的數(shù)據(jù)進行分組并確定各個查詢組對應使用的數(shù)據(jù)庫,從確定的數(shù)據(jù)庫中分別查詢相 應查詢組的數(shù)據(jù),最后將查詢到的所有查詢組的數(shù)據(jù)進行合并,生成查詢結果,一方面,基 于本發(fā)明的技術方案,可以將海量數(shù)據(jù)分開存放在多個數(shù)據(jù)庫中,減小單個數(shù)據(jù)庫的壓力, 另一方面,本發(fā)明的技術方案將多表查詢分成多個單表查詢,簡化了查詢邏輯,能夠較快地 獲得查詢結果,提高了數(shù)據(jù)查詢的速度。
【專利附圖】
【附圖說明】
[0016] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn) 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。
[0017] 圖1為本發(fā)明提供的多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法一個實施例流程示意圖;
[0018] 圖2為本發(fā)明提供的多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法另一個實施例流程示意圖;
[0019] 圖3為本發(fā)明提供的一種數(shù)據(jù)查詢裝置一個實施例結構示意圖。
【具體實施方式】
[0020] 為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結合本發(fā)明 實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實 施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領域普通 技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范 圍。
[0021] 首先說明的是,本發(fā)明實施例中的一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和數(shù)據(jù)查詢裝 置應用于數(shù)據(jù)庫系統(tǒng)中,該數(shù)據(jù)庫系統(tǒng)包含兩個以上數(shù)據(jù)庫,用戶可以根據(jù)數(shù)據(jù)類型、數(shù)據(jù) 使用頻率、數(shù)據(jù)使用分布情況、數(shù)據(jù)量的大小等因素對數(shù)據(jù)的存放進行靈活分布部署,例 如,假設數(shù)據(jù)庫系統(tǒng)包含數(shù)據(jù)庫A和數(shù)據(jù)庫B,數(shù)據(jù)庫A的吞吐能力高于數(shù)據(jù)庫B的吞吐能 力,則可以將數(shù)據(jù)量較大的數(shù)據(jù)表存放在數(shù)據(jù)庫A中,將數(shù)據(jù)量較小的數(shù)據(jù)表存放在數(shù)據(jù) 庫B中,又例如,可以將熱點數(shù)據(jù)(如最近兩年的數(shù)據(jù))存放到數(shù)據(jù)庫A中,將非熱點數(shù)據(jù) (如兩年前的數(shù)據(jù))存放到數(shù)據(jù)庫B中,通過合理的數(shù)據(jù)存放配置對進一步優(yōu)化數(shù)據(jù)庫系 統(tǒng)。
[0022] 下面對本發(fā)明實施例中的一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法進行描述,請參閱圖1, 本發(fā)明實施例中的多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法,包括:
[0023] 101、若請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表,則,對請求查詢的數(shù)據(jù)進行分組,將 屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在不同的查 詢組中;
[0024] 本發(fā)明實施例中,數(shù)據(jù)查詢裝置根據(jù)數(shù)據(jù)所屬的數(shù)據(jù)表,對請求查詢的數(shù)據(jù)進行 分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,而將屬于不同數(shù)據(jù)表的數(shù)據(jù)分在 不同的查詢組中,以便將多表查詢拆分為多個單表查詢。
[0025] 本發(fā)明實施例,數(shù)據(jù)查詢裝置可以根據(jù)數(shù)據(jù)庫系統(tǒng)中的配置表查詢數(shù)據(jù)所屬的數(shù) 據(jù)表以及各個數(shù)據(jù)表所存放的數(shù)據(jù)庫,具體的,配置表包含數(shù)據(jù)列標識和數(shù)據(jù)表標識的對 應關系,每個數(shù)據(jù)的數(shù)據(jù)列標識為已知,因此,數(shù)據(jù)查詢裝置能夠根據(jù)請求查詢的數(shù)據(jù)的數(shù) 據(jù)列標識獲知各個數(shù)據(jù)所屬的數(shù)據(jù)列,進一步,根據(jù)配置表中包含的數(shù)據(jù)列標識和數(shù)據(jù)表 標識的對應關系,獲知各個數(shù)據(jù)所屬的數(shù)據(jù)表,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查 詢組內,將屬于不同數(shù)據(jù)表的數(shù)據(jù)分在不同的查詢組中。需要說明的是,對于某一個數(shù)據(jù), 其可能只屬于一個數(shù)據(jù)表,或者,也可能屬于多個數(shù)據(jù)表。
[0026] 102、對于每個查詢組,確定查詢該查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從該數(shù)據(jù) 庫查詢該查詢組的數(shù)據(jù);
[0027] 本發(fā)明實施例中,同一個數(shù)據(jù)表的不同數(shù)據(jù)可以存放在不同數(shù)據(jù)庫中,例如,可以 將某個數(shù)據(jù)表中使用頻率高的數(shù)據(jù)或者近期數(shù)據(jù)(如最近1個月的數(shù)據(jù))存放在內存數(shù)據(jù) 庫中,將其它數(shù)據(jù)存放在其它數(shù)據(jù)庫(例如關系型數(shù)據(jù)庫)中,因此,在步驟101之后,數(shù)據(jù) 查詢裝置進一步確定查詢該查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從相應數(shù)據(jù)庫中查詢該查 詢組的數(shù)據(jù)。
[0028] 可選地,在一種實現(xiàn)方式中,數(shù)據(jù)查詢裝置根據(jù)查詢組的數(shù)據(jù)的查詢頻率,確定查 詢上述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。舉例說明,假設數(shù)據(jù)庫系統(tǒng)將查詢頻率高于某 個預置頻率值的數(shù)據(jù)存放在數(shù)據(jù)庫A中,將查詢頻率不高于該預置頻率值的數(shù)據(jù)存放在數(shù) 據(jù)庫B中,則對于查詢組中查詢頻率高于該預置頻率值的數(shù)據(jù),數(shù)據(jù)查詢裝置確定查詢該 數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫A,對于查詢組中查詢頻率低于該預置頻率值的數(shù)據(jù),數(shù) 據(jù)查詢裝置確定查詢該數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫B。
[0029] 可選地,在另一種實現(xiàn)方式中,數(shù)據(jù)查詢裝置根據(jù)查詢組的數(shù)據(jù)的時間區(qū)間范圍, 確定查詢上述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。舉例說明,假設數(shù)據(jù)庫系統(tǒng)將某個數(shù)據(jù) 表中2000年以前的數(shù)據(jù)存放在數(shù)據(jù)庫A中,將該數(shù)據(jù)表中2000年至2010年的數(shù)據(jù)存放 在數(shù)據(jù)庫B中,將2010年以后的數(shù)據(jù)存放在數(shù)據(jù)庫C中,則對于查詢組中時間區(qū)間范圍在 2000年以前的數(shù)據(jù),數(shù)據(jù)查詢裝置確定查詢該數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫A,對于 查詢組中時間區(qū)間范圍在2000年至2010年之間的數(shù)據(jù),數(shù)據(jù)查詢裝置確定查詢該數(shù)據(jù)時 對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫B,對于查詢組中時間區(qū)間范圍在2010年以后的數(shù)據(jù),數(shù)據(jù)查 詢裝置確定查詢該數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫C。需要說明的是,數(shù)據(jù)的時間區(qū)間范 圍根據(jù)數(shù)據(jù)庫系統(tǒng)中記錄的該數(shù)據(jù)的時間確定。
[0030] 可選地,在再一種實現(xiàn)方式中,數(shù)據(jù)查詢裝置根據(jù)預置的數(shù)據(jù)表與數(shù)據(jù)庫的對應 關系,確定查詢上述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。舉例說明,假設數(shù)據(jù)庫系統(tǒng)將數(shù)據(jù) 量較大的數(shù)據(jù)表(假設為表1)存放在數(shù)據(jù)庫A中,將數(shù)據(jù)量較小的數(shù)據(jù)表(假設為表2) 存放在數(shù)據(jù)庫B中,并在數(shù)據(jù)庫系統(tǒng)預置表1與數(shù)據(jù)庫A的對應關系以及表2與數(shù)據(jù)庫B 的對應關系,例如,可以在步驟101中提及的配置表中配置1與數(shù)據(jù)庫A的對應關系以及表 2與數(shù)據(jù)庫B的對應關系,則數(shù)據(jù)查詢裝置根據(jù)表1和數(shù)據(jù)庫A的對應關系,即可確定查詢 表1中的數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫B,根據(jù)表2和數(shù)據(jù)庫B的對應關系,確定查詢 表2中的數(shù)據(jù)時對應使用的數(shù)據(jù)庫為數(shù)據(jù)庫B。
[0031] 當確定出與查詢組對應使用的數(shù)據(jù)庫時,數(shù)據(jù)查詢裝置可以根據(jù)數(shù)據(jù)庫的類型, 使用該數(shù)據(jù)庫支持的數(shù)據(jù)查詢算法(例如Oracle或SQL Server)拼裝好查詢語句后發(fā)送 給該數(shù)據(jù)庫,以便從該數(shù)據(jù)庫中查詢該查詢組的數(shù)據(jù),數(shù)據(jù)庫在接收到查詢語句時,根據(jù)該 查詢語句向數(shù)據(jù)查詢裝置返回該查詢組的查詢結果。
[0032] 本發(fā)明實施例中,可以對多個查詢組并行處理,即啟用多線程,對多個查詢組同時 執(zhí)行步驟102中的操作。
[0033] 103、將查詢到所有查詢組的數(shù)據(jù)進行合并,生成查詢結果;
[0034] 可選地,在一種實現(xiàn)方式中,數(shù)據(jù)查詢裝置根據(jù)請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列生 成行列矩陣位圖,其中,上述行列矩陣位圖的列與上述請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列一一 對應;根據(jù)預設的主鍵,將查詢到的各個查詢組的數(shù)據(jù)填充到上述行列矩陣位圖中,其中, 上述行列矩陣位圖的行與上述預設的主鍵的數(shù)據(jù)一一對應;將填充數(shù)據(jù)后的行列矩陣位圖 確定為上述查詢結果。本發(fā)明實施例中,上述主鍵也即主關鍵字,是數(shù)據(jù)表中的一個或多個 字段,主鍵的值用于唯一地標識數(shù)據(jù)表中的某一條記錄,上述主鍵可以為數(shù)據(jù)庫系統(tǒng)默認 的主鍵,或者,也可以由用戶自定義配置,此處不作限定。
[0035] 在上述實現(xiàn)方式中,行列矩陣位圖的每一個位記錄一個數(shù)據(jù)的內容指針,可選的, 為行列矩陣位圖的每個位設置數(shù)據(jù)標識位,當行列矩陣位圖的某個位的數(shù)據(jù)標識位為無效 值(例如為〇)時,則表明該位沒有填充數(shù)據(jù),當行列矩陣位圖的某個位的數(shù)據(jù)標識位為有 效值(例如為1)時,則表明該位已填充數(shù)據(jù)。數(shù)據(jù)查詢裝置根據(jù)預設的主鍵,將查詢到的 各個查詢組的數(shù)據(jù)填充到上述行列矩陣位圖中,具體的,在合并過程中,當主鍵的值未出現(xiàn) 在行列矩陣位圖中時,在該行列矩陣位圖中為該主鍵的值新建一行。
[0036] 在本發(fā)明實施例中,數(shù)據(jù)查詢裝置也可以通過其它方式將查詢到所有查詢組的數(shù) 據(jù)進行合并,例如,不通過行列矩陣位圖而直接根據(jù)預設的主鍵將查詢到所有查詢組的數(shù) 據(jù)進行合并,此處不做限定。
[0037] 進一步,在步驟103之后,數(shù)據(jù)查詢裝置將生成的查詢結果輸出到顯示界面顯示, 或者,若數(shù)據(jù)查詢?yōu)樯蠈討冒l(fā)起,則數(shù)據(jù)查詢裝置將生成的查詢結果發(fā)送給該上層應用, 以便該上層應用利用查詢結果進行數(shù)據(jù)分析或其它操作。
[0038] 需要說明的是,本發(fā)明實施例中的數(shù)據(jù)庫系統(tǒng)所包含的數(shù)據(jù)庫類型包括但不限于 層次型數(shù)據(jù)庫、網(wǎng)狀型數(shù)據(jù)庫和關系型數(shù)據(jù)庫。
[0039] 由上可見,本發(fā)明中的數(shù)據(jù)庫系統(tǒng)包含兩個以上的數(shù)據(jù)庫,在查詢數(shù)據(jù)時,對請求 查詢的數(shù)據(jù)進行分組并確定各個查詢組對應使用的數(shù)據(jù)庫,從確定的數(shù)據(jù)庫中分別查詢相 應查詢組的數(shù)據(jù),最后將查詢到的所有查詢組的數(shù)據(jù)進行合并,生成查詢結果,一方面,基 于本發(fā)明的技術方案,可以將海量數(shù)據(jù)分開存放在多個數(shù)據(jù)庫中,減小單個數(shù)據(jù)庫的壓力, 另一方面,本發(fā)明的技術方案將多表查詢分成多個單表查詢,簡化了查詢邏輯,能夠較快地 獲得查詢結果,提高了數(shù)據(jù)查詢的速度。
[0040] 為便于更好地理解本發(fā)明實施例中的多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法,下面以一應用 場景對本發(fā)明實施例中的多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法進行說明,請參閱圖2,包括:
[0041] 201、接收數(shù)據(jù)查詢請求;
[0042] 數(shù)據(jù)查詢裝置接收數(shù)據(jù)查詢請求,其中,上述數(shù)據(jù)查詢請求可能來自用戶,也可能 來自上層應用。
[0043] 上述數(shù)據(jù)查詢請求包括:請求查詢的數(shù)據(jù)的數(shù)據(jù)列標識。
[0044] 202、判斷上述數(shù)據(jù)查詢請求請求查詢的數(shù)據(jù)是否涉及兩個以上數(shù)據(jù)表;
[0045] 數(shù)據(jù)查詢裝置根據(jù)數(shù)據(jù)列標識與數(shù)據(jù)表的對應關系,判斷上述數(shù)據(jù)查詢請求請求 查詢的數(shù)據(jù)是否涉及兩個以上數(shù)據(jù)表,若不涉及兩個以上數(shù)據(jù)表,則執(zhí)行步驟203和步驟 207,若涉及兩個以上數(shù)據(jù)表,則執(zhí)行步驟204至207。
[0046] 203、執(zhí)行單表查詢;
[0047] 具體地,單表查詢可以參照現(xiàn)有數(shù)據(jù)庫中的單表查詢方案,此處不再贅述。
[0048] 204、對請求查詢的數(shù)據(jù)進行分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組 內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在不同的查詢組中;
[0049] 數(shù)據(jù)查詢裝置將對請求查詢的數(shù)據(jù)進行分組,以便將多表查詢拆分為多個單表查 詢。
[0050] 本發(fā)明實施例,數(shù)據(jù)查詢裝置可以根據(jù)數(shù)據(jù)庫系統(tǒng)中的配置表查詢數(shù)據(jù)所屬的數(shù) 據(jù)表以及各個數(shù)據(jù)表所存放的數(shù)據(jù)庫,具體的,配置表包含數(shù)據(jù)列標識和數(shù)據(jù)表標識的對 應關系,每個數(shù)據(jù)的數(shù)據(jù)列標識為已知,因此,數(shù)據(jù)查詢裝置能夠根據(jù)請求查詢的數(shù)據(jù)的數(shù) 據(jù)列標識獲知各個數(shù)據(jù)所屬的數(shù)據(jù)列,進一步,根據(jù)配置表中包含的數(shù)據(jù)列標識和數(shù)據(jù)表 標識的對應關系,獲知各個數(shù)據(jù)所屬的數(shù)據(jù)表,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查 詢組內,將屬于不同數(shù)據(jù)表的數(shù)據(jù)分在不同的查詢組中。需要說明的是,對于某一個數(shù)據(jù), 其可能只屬于一個數(shù)據(jù)表,或者,也可能屬于多個數(shù)據(jù)表。
[0051] 205、對于每個查詢組,確定查詢該查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從該數(shù)據(jù) 庫查詢該查詢組的數(shù)據(jù);
[0052] 步驟205的具體實現(xiàn)方式可以參照圖1所示實施例的步驟102中的描述,此處不 再贅述。
[0053] 206、將查詢到所有查詢組的數(shù)據(jù)進行合并,生成查詢結果;
[0054] 步驟206的具體實現(xiàn)方式可以參照圖1所示實施例的步驟103中的描述,此處不 再贅述。
[0055] 207、輸出查詢結果;
[0056] 數(shù)據(jù)查詢裝置將最終的查詢結果輸出到顯示界面顯示,或者,若數(shù)據(jù)查詢?yōu)樯蠈?應用發(fā)起,則數(shù)據(jù)查詢裝置將最終的查詢結果發(fā)送給該上層應用,以便該上層應用利用查 詢結果進行數(shù)據(jù)分析或其它操作。
[0057] 需要說明的是,本發(fā)明實施例中的數(shù)據(jù)庫系統(tǒng)所包含的數(shù)據(jù)庫類型包括但不限于 層次型數(shù)據(jù)庫、網(wǎng)狀型數(shù)據(jù)庫和關系型數(shù)據(jù)庫。
[0058] 由上可見,本發(fā)明中的數(shù)據(jù)庫系統(tǒng)包含兩個以上的數(shù)據(jù)庫,在查詢數(shù)據(jù)時,對請求 查詢的數(shù)據(jù)進行分組并確定各個查詢組對應使用的數(shù)據(jù)庫,從確定的數(shù)據(jù)庫中分別查詢相 應查詢組的數(shù)據(jù),最后將查詢到的所有查詢組的數(shù)據(jù)進行合并,生成查詢結果,一方面,基 于本發(fā)明的技術方案,可以將海量數(shù)據(jù)分開存放在多個數(shù)據(jù)庫中,減小單個數(shù)據(jù)庫的壓力, 另一方面,本發(fā)明的技術方案將多表查詢分成多個單表查詢,簡化了查詢邏輯,能夠較快地 獲得查詢結果,提高了數(shù)據(jù)查詢的速度。
[0059] 本發(fā)明實施例還提供一種數(shù)據(jù)查詢裝置,如圖3所示,本發(fā)明實施例中的數(shù)據(jù)查 詢裝置300包括:
[0060] 查詢拆分單元301,用于當請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表時,對請求查詢的 數(shù)據(jù)進行分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的 數(shù)據(jù)在不同的查詢組中;
[0061] 確定單元302,用于針對查詢拆分單元301拆分的每個查詢組,確定查詢上述查詢 組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫;
[0062] 查詢執(zhí)行單元303,用于針對上述查詢拆分單元拆分的每個查詢組,從確定單元 302確定的與查詢組對應的數(shù)據(jù)庫中,查詢上述查詢組的數(shù)據(jù);
[0063] 合并單元304,用于將查詢執(zhí)行單元303查詢到的所有查詢組的數(shù)據(jù)進行合并,生 成查詢結果。
[0064] 可選地,確定單元302具體用于:根據(jù)查詢組的數(shù)據(jù)的查詢頻率,確定查詢上述查 詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。
[0065] 可選地,確定單元302具體用于:根據(jù)查詢組的數(shù)據(jù)的時間區(qū)間范圍,確定查詢上 述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。
[0066] 可選地,確定單元302具體用于:根據(jù)預置的數(shù)據(jù)表與數(shù)據(jù)庫的對應關系,確定查 詢上述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。
[0067] 可選地,在圖3所示實施例的基礎上,合并單元304包括:生成單元,用于根據(jù)上述 請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列生成行列矩陣位圖,其中,上述行列矩陣位圖的列與上述請 求查詢的數(shù)據(jù)包含的數(shù)據(jù)列一一對應;數(shù)據(jù)填充單元,用于根據(jù)預設的主鍵,將查詢到的各 個查詢組的數(shù)據(jù)填充到上述行列矩陣位圖中,其中,上述行列矩陣位圖的行與上述預設的 主鍵的值一一對應;子確定單元,用于將填充數(shù)據(jù)后的行列矩陣位圖確定為上述查詢結果。
[0068] 需要說明的是,本發(fā)明實施例中的數(shù)據(jù)查詢裝置可以如上述方法實施例中的數(shù) 據(jù)查詢裝置,可以用于實現(xiàn)上述方法實施例中的全部技術方案,其各個功能模塊的功能可 以根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可參照上述實施例中的相關描 述,此處不再贅述。
[0069] 在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其 它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅 僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結 合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的 相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通 信連接,可以是電性,機械或其它的形式。
[0070] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目 的。
[0071] 另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單 元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0072] 所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用 時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發(fā)明的技術方案本質 上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形 式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算 機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法 的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程 序代碼的介質。
[0073] 需要說明的是,對于前述的各方法實施例,為了簡便描述,故將其都表述為一系列 的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為 依據(jù)本發(fā)明,某些步驟可以采用其它順序或者同時進行。其次,本領域技術人員也應該知 悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定都是本發(fā) 明所必須的。
[0074] 在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部 分,可以參見其它實施例的相關描述。
[0075] 以上為本發(fā)明所提供的一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法和裝置的描述,對于本領 域的一般技術人員,依據(jù)本發(fā)明實施例的思想,在【具體實施方式】及應用范圍上均會有改變 之處,綜上,本說明書內容不應理解為對本發(fā)明的限制。
【權利要求】
1. 一種多表數(shù)據(jù)關聯(lián)查詢優(yōu)化方法,其特征在于,應用于包含兩個以上數(shù)據(jù)庫的數(shù)據(jù) 庫系統(tǒng)中,所述數(shù)據(jù)查詢方法包括: 若請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表,則對請求查詢的數(shù)據(jù)進行分組,將屬于同一 個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在不同的查詢組中; 對于每個查詢組,確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,從所述數(shù)據(jù)庫查 詢所述查詢組的數(shù)據(jù); 將查詢到所有查詢組的數(shù)據(jù)進行合并,生成查詢結果。
2. 根據(jù)權利要求1所述的方法,其特征在于, 所述確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,包括: 根據(jù)所述查詢組的數(shù)據(jù)的查詢頻率,確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù) 庫。
3. 根據(jù)權利要求1所述的方法,其特征在于, 所述確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,包括: 根據(jù)所述查詢組的數(shù)據(jù)的時間區(qū)間范圍,確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù) 據(jù)庫。
4. 根據(jù)權利要求1所述的方法,其特征在于, 所述確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫,包括: 根據(jù)預置的數(shù)據(jù)表與數(shù)據(jù)庫的對應關系,確定查詢所述查詢組的數(shù)據(jù)時對應使用的數(shù) 據(jù)庫。
5. 根據(jù)權利要求1至4任一項所述的方法,其特征在于,所述將查詢到所有查詢組的數(shù) 據(jù)進行合并,生成查詢結果,包括: 根據(jù)所述請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列生成行列矩陣位圖,其中,所述行列矩陣位圖 的列與所述請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列一一對應; 根據(jù)預設的主鍵,將查詢到的各個查詢組的數(shù)據(jù)填充到所述行列矩陣位圖中,其中,所 述行列矩陣位圖的行與所述預設的主鍵的值一一對應; 將填充數(shù)據(jù)后的行列矩陣位圖確定為所述查詢結果。
6. -種數(shù)據(jù)查詢裝置,其特征在于,應用于包含兩個以上數(shù)據(jù)庫的數(shù)據(jù)庫系統(tǒng)中,所述 數(shù)據(jù)庫查詢裝置包括: 查詢拆分單元,用于當請求查詢的數(shù)據(jù)涉及兩個以上數(shù)據(jù)表時,對請求查詢的數(shù)據(jù)進 行分組,將屬于同一個數(shù)據(jù)表的數(shù)據(jù)分在同一個查詢組內,其中,屬于不同數(shù)據(jù)表的數(shù)據(jù)在 不同的查詢組中; 確定單元,用于針對所述查詢拆分單元拆分的每個查詢組,確定查詢所述查詢組的數(shù) 據(jù)時對應使用的數(shù)據(jù)庫; 查詢執(zhí)行單元,用于針對所述查詢拆分單元拆分的每個查詢組,從所述確定單元確定 的與查詢組對應的數(shù)據(jù)庫中,查詢所述查詢組的數(shù)據(jù); 合并單元,用于將所述查詢執(zhí)行單元查詢到的所有查詢組的數(shù)據(jù)進行合并,生成查詢 結果。
7. 根據(jù)權利要求6所述的數(shù)據(jù)查詢裝置,其特征在于, 所述確定單元具體用于:根據(jù)查詢組的數(shù)據(jù)的查詢頻率,確定查詢所述查詢組的數(shù)據(jù) 時對應使用的數(shù)據(jù)庫。
8. 根據(jù)權利要求6所述的數(shù)據(jù)查詢裝置,其特征在于, 所述確定單元具體用于:根據(jù)查詢組的數(shù)據(jù)的時間區(qū)間范圍,確定查詢所述查詢組的 數(shù)據(jù)時對應使用的數(shù)據(jù)庫。
9. 根據(jù)權利要求6所述的數(shù)據(jù)查詢裝置,其特征在于, 所述確定單元具體用于:根據(jù)預置的數(shù)據(jù)表與數(shù)據(jù)庫的對應關系,確定查詢所述查詢 組的數(shù)據(jù)時對應使用的數(shù)據(jù)庫。
10. 根據(jù)權利要求6至9任一項所述的數(shù)據(jù)查詢裝置,其特征在于,所述合并單元包 括: 生成單元,用于根據(jù)所述請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列生成行列矩陣位圖,其中,所述 行列矩陣位圖的列與所述請求查詢的數(shù)據(jù)包含的數(shù)據(jù)列一一對應; 數(shù)據(jù)填充單元,用于根據(jù)預設的主鍵,將查詢到的各個查詢組的數(shù)據(jù)填充到所述行列 矩陣位圖中,其中,所述行列矩陣位圖的行與所述預設的主鍵的值一一對應; 子確定單元,用于將填充數(shù)據(jù)后的行列矩陣位圖確定為所述查詢結果。
【文檔編號】G06F17/30GK104112008SQ201410339632
【公開日】2014年10月22日 申請日期:2014年7月16日 優(yōu)先權日:2014年7月16日
【發(fā)明者】陳工孟, 唐杰 申請人:深圳市國泰安信息技術有限公司