一種基于視圖的查詢方法
【專利摘要】本發(fā)明公開(kāi)一種基于視圖的查詢方法,包括以下步驟:基于多個(gè)數(shù)據(jù)庫(kù)表生成視圖,并且使得該視圖包括包含標(biāo)識(shí)符的列,所述標(biāo)識(shí)符用于標(biāo)識(shí)相應(yīng)的數(shù)據(jù)庫(kù)表,將標(biāo)識(shí)符作為查詢條件的部分,查詢關(guān)于視圖的特定的數(shù)據(jù)庫(kù)表。
【專利說(shuō)明】一種基于視圖的查詢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)查詢優(yōu)化,并且尤其涉及一種基于視圖的查詢方法。
【背景技術(shù)】
[0002]隨著數(shù)據(jù)庫(kù)數(shù)據(jù)的持續(xù)增加,通常通過(guò)拆分?jǐn)?shù)據(jù)庫(kù)表來(lái)擺脫單表訪問(wèn)的性能瓶頸。然而,隨著數(shù)據(jù)庫(kù)表數(shù)量的增加,創(chuàng)建的視圖所涉及的數(shù)據(jù)庫(kù)表也越來(lái)越多。因此,對(duì)于涉及多個(gè)數(shù)據(jù)庫(kù)表的視圖的查詢性能較低。
[0003]需要一種優(yōu)化的查詢方法。
【發(fā)明內(nèi)容】
[0004]根據(jù)本發(fā)明的一個(gè)目的,公開(kāi)一種基于視圖的查詢方法,包括以下步驟:基于多個(gè)數(shù)據(jù)庫(kù)表生成視圖,并且使得該視圖包括包含標(biāo)識(shí)符的列,所述標(biāo)識(shí)符用于標(biāo)識(shí)相應(yīng)的數(shù)據(jù)庫(kù)表,將標(biāo)識(shí)符作為查詢條件的部分,查詢關(guān)于視圖的特定的數(shù)據(jù)庫(kù)表。
[0005]優(yōu)選地,上述方法還包括以下步驟:基于所述視圖創(chuàng)建實(shí)體Bean,
將數(shù)據(jù)庫(kù)表的標(biāo)識(shí)符和數(shù)據(jù)庫(kù)表的主鍵一起作為所述實(shí)體Bean的主鍵,利用所述實(shí)體Bean的主鍵對(duì)標(biāo)識(shí)符所指示的數(shù)據(jù)庫(kù)表執(zhí)行查詢。
[0006]本發(fā)明提高了基于視圖的查詢效率,尤其是基于視圖的JPA主鍵查詢效率,使基于視圖的查詢等效于基于單表的查詢,使查詢效率不再因?yàn)橐晥D中增加表而受影響。
【專利附圖】
【附圖說(shuō)明】
[0007]在參照附圖閱讀了本發(fā)明的【具體實(shí)施方式】以后,本領(lǐng)域技術(shù)人員將會(huì)更清楚地了解本發(fā)明的各個(gè)方面。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,這些附圖僅僅用于配合【具體實(shí)施方式】說(shuō)明本發(fā)明的技術(shù)方案,而并非意在對(duì)本發(fā)明的保護(hù)范圍構(gòu)成限制。
[0008]圖1是根據(jù)本發(fā)明實(shí)施例的基于視圖的查詢方法的步驟示意圖。
[0009]圖2是根據(jù)本發(fā)明實(shí)施例的基于視圖的查詢方法的示例。
【具體實(shí)施方式】
[0010]為了解決當(dāng)涉及的數(shù)據(jù)庫(kù)表的數(shù)量增加,基于視圖的查詢性能低下的問(wèn)題,根據(jù)本發(fā)明提出在視圖中新增數(shù)據(jù)庫(kù)表的標(biāo)識(shí)列,從而在查詢條件中增加數(shù)據(jù)庫(kù)的標(biāo)識(shí),指定要查詢的特定的數(shù)據(jù)庫(kù)表。圖1是根據(jù)本發(fā)明實(shí)施例的基于視圖的查詢方法的步驟示意圖。如圖1所示,根據(jù)本發(fā)明的方法包括以下步驟:基于多個(gè)數(shù)據(jù)庫(kù)表生成視圖,并且使得該視圖包括包含標(biāo)識(shí)符的列,所述標(biāo)識(shí)符用于標(biāo)識(shí)相應(yīng)的數(shù)據(jù)庫(kù)表。以及,將標(biāo)識(shí)符作為查詢條件的部分,查詢關(guān)于視圖的特定的數(shù)據(jù)庫(kù)表。
[0011]進(jìn)一步,對(duì)于J2EE的環(huán)境,可以通過(guò)上述步驟并且在Entity Bean (實(shí)體Bean)中創(chuàng)建“偽主鍵”來(lái)提高JPA對(duì)視圖的查詢效率。
[0012]現(xiàn)有技術(shù)中,通過(guò)對(duì)視圖創(chuàng)建Entity Bean,并將Entity Bean的主鍵指定為數(shù)據(jù)庫(kù)表的主鍵,從而通過(guò)調(diào)用JPA主鍵查詢接口執(zhí)行查詢。這種方法每次執(zhí)行查詢均需要訪問(wèn)視圖中的每張表,當(dāng)表套數(shù)增多,數(shù)據(jù)量增大時(shí),該方法對(duì)視圖中的表的無(wú)效查詢(查詢記錄數(shù)是O)會(huì)嚴(yán)重降低查詢性能。另一種方法是為每張表創(chuàng)建不同的Entity Bean,然后通過(guò)調(diào)用JPA主鍵查詢接口實(shí)現(xiàn)單表主鍵查詢。當(dāng)表套數(shù)增多時(shí)創(chuàng)建的Entity Bean會(huì)越來(lái)越多,導(dǎo)致Entity Bean難以維護(hù)。
[0013]本發(fā)明進(jìn)一步通過(guò)以下步驟來(lái)克服上述技術(shù)缺陷:基于所述視圖創(chuàng)建實(shí)體Bean,將數(shù)據(jù)庫(kù)表的標(biāo)識(shí)符和數(shù)據(jù)庫(kù)表的主鍵一起作為所述實(shí)體Bean的主鍵,利用所述實(shí)體Bean的主鍵對(duì)標(biāo)識(shí)符所指示的數(shù)據(jù)庫(kù)表執(zhí)行查詢。
[0014]示例
步驟1:在視圖創(chuàng)建時(shí),新增一列用于標(biāo)識(shí)數(shù)據(jù)庫(kù)表。例如:
對(duì)表 tbl_his_logl 和 tbl_his_log2 創(chuàng)建視圖 viw_his_log, create view viw_his_log (identifier,...) as
(select I, tl.* from tbl_his_logl tl) un1n all (select 2, t2.* from tbl_his_log2 t2)
通過(guò)上述步驟創(chuàng)建的視圖包括了標(biāo)識(shí)符(identifier)列,用于標(biāo)識(shí)特定數(shù)據(jù)庫(kù)表。
[0015]步驟2:基于視圖創(chuàng)建Entity Bean,將Entity Bean的主鍵設(shè)置為是“ identifier+表的真實(shí)主鍵pri_key”。在查詢的時(shí)候通過(guò)指定表的標(biāo)識(shí)identifier和表的真實(shí)主鍵pri_key,可以實(shí)現(xiàn)對(duì)特定的表執(zhí)行主鍵查詢,從而達(dá)到查詢性能的提高。
[0016]圖2是根據(jù)本發(fā)明實(shí)施例的基于視圖的查詢方法的示例。如圖所示,在查詢SQL語(yǔ)句中,指定查詢條件為identifier=l, pri_key=2。數(shù)據(jù)庫(kù)接收到查詢SQL語(yǔ)句后,SQL解釋器根據(jù)identifiers做優(yōu)化處理后,無(wú)需對(duì)視圖的所有表執(zhí)行查詢,只需針對(duì)滿足條件的表I執(zhí)行查詢。最后在表I上執(zhí)行條件為pri_key=2的查詢,并將結(jié)果返回。
[0017]通過(guò)以上實(shí)施方式的描述,本領(lǐng)域中的普通技術(shù)人員能夠理解,在不偏離本發(fā)明的精神和范圍的情況下,還可以對(duì)本發(fā)明的【具體實(shí)施方式】作各種變更和替換。這些變更和替換都落在本發(fā)明權(quán)利要求書(shū)所限定的范圍內(nèi)。
【權(quán)利要求】
1.一種基于視圖的查詢方法,其特征在于,包括以下步驟: 基于多個(gè)數(shù)據(jù)庫(kù)表生成視圖,并且使得該視圖包括包含標(biāo)識(shí)符的列,所述標(biāo)識(shí)符用于標(biāo)識(shí)相應(yīng)的數(shù)據(jù)庫(kù)表, 將標(biāo)識(shí)符作為查詢條件的部分,查詢關(guān)于視圖的特定的數(shù)據(jù)庫(kù)表。
2.如權(quán)利要求1所述的方法,其特征在于,還包括以下步驟: 基于所述視圖創(chuàng)建實(shí)體Bean, 將數(shù)據(jù)庫(kù)表的標(biāo)識(shí)符和數(shù)據(jù)庫(kù)表的主鍵一起作為所述實(shí)體Bean的主鍵, 利用所述實(shí)體Bean的主鍵對(duì)標(biāo)識(shí)符所指示的數(shù)據(jù)庫(kù)表執(zhí)行查詢。
【文檔編號(hào)】G06F17/30GK104281592SQ201310278830
【公開(kāi)日】2015年1月14日 申請(qǐng)日期:2013年7月4日 優(yōu)先權(quán)日:2013年7月4日
【發(fā)明者】唐真, 周繼恩, 湯茂安, 李偉 申請(qǐng)人:中國(guó)銀聯(lián)股份有限公司