表達(dá)式,該檢索表達(dá)式用于在數(shù)據(jù)庫中進(jìn)行檢索;
[0057] 具體地,該檢索表達(dá)式一般由變量(也可稱之為檢索詞)和各種邏輯運(yùn)算符組成, 例如該檢索表達(dá)式為vl+v2〈10,其中vl和v2為該檢索表達(dá)式中的變量(檢索詞)。
[0058] S120,根據(jù)該檢索表達(dá)式的變量及操作符,從預(yù)設(shè)的表達(dá)式集中選取該檢索表達(dá) 式的匹配表達(dá)式;
[0059] S130,從該檢索表達(dá)式的變量中選取目標(biāo)變量,該目標(biāo)變量在該數(shù)據(jù)庫中建有索 引;
[0060] S140,根據(jù)該匹配表達(dá)式以及該目標(biāo)變量,將該檢索表達(dá)式轉(zhuǎn)換成等價(jià)的 Sargable表達(dá)式;
[0061] S150,根據(jù)該Sargable表達(dá)式,通過該索引,在該數(shù)據(jù)庫中進(jìn)行檢索。
[0062] 因此,本發(fā)明實(shí)施例提供的用于檢索的方法,通過將檢索表達(dá)式轉(zhuǎn)換為Sargable 表達(dá)式,從而實(shí)現(xiàn)了利用索引來檢索,能夠有效提高檢索的效率。
[0063] 在S110中,獲取檢索表達(dá)式,具體地,該檢索表達(dá)式可以為連接場景下的檢索表 達(dá)式,例如嵌套循環(huán)Nestloop Jion連接場景中的Jion表達(dá)式;該檢索表達(dá)式還可以是查 詢場景下的檢索表達(dá)式,例如查詢場景中的Filter表達(dá)式。
[0064] 可選地,在本發(fā)明實(shí)施例中,該檢索表達(dá)式為連接場景下的或者查詢場景下的檢 索表達(dá)式。
[0065] 應(yīng)理解,嵌套循環(huán)Nestloop Jion連接是關(guān)系數(shù)據(jù)庫中一種常見的連接方式。在 Nestloop Jion連接中,進(jìn)行連接的兩個(gè)數(shù)據(jù)集合(數(shù)據(jù)表)分別成為外側(cè)表(驅(qū)動(dòng)表,也 可稱之為Outer Side)和內(nèi)側(cè)表(被驅(qū)動(dòng)表,也可稱之為Inner Side)。首先處理外側(cè)表中 每一行符合條件的數(shù)據(jù),之后每一行數(shù)據(jù)和內(nèi)側(cè)表進(jìn)行連接匹配結(jié)果,最終獲取到結(jié)果集 合。具體地,在Nestloop Jion連接方式中,從外側(cè)表(Outer Side)依次取記錄,在內(nèi)側(cè)表 (Inner Side)按照Nestloop連接條件遍歷查找,找到符合條件的連接記錄。
[0066] 在嵌套循環(huán)Nest Loop Join中,保證連接列上能存在索引對(duì)象,可以很大程度低 提高Nest Loop Join的連接效率。
[0067] 在S120中,從預(yù)設(shè)的表達(dá)式集中選取該檢索表達(dá)式的匹配表達(dá)式。具體地,該 預(yù)設(shè)的表達(dá)式集包括多種類型的表達(dá)式,如表1(b)中第一列所示。例如該檢索表達(dá)式為 vl+v2〈10,則該檢索表達(dá)式在該表達(dá)式集中的匹配表達(dá)式為a+b op c,其中,a對(duì)應(yīng)于vl,b 對(duì)應(yīng)于v2, op對(duì)應(yīng)于〈,c對(duì)應(yīng)于10。
[0068] 應(yīng)理解,該預(yù)設(shè)的表達(dá)式集可以是系統(tǒng)預(yù)設(shè)的,或者是用戶自定義的,本發(fā)明實(shí)施 例對(duì)此不做限定。
[0069] 在S130中,從該檢索表達(dá)式的變量中選取在數(shù)據(jù)庫中建有索引的目標(biāo)變量。
[0070] 具體地,該檢索表達(dá)式可以包括多個(gè)變量,從該多個(gè)變量中選取出建有索引的變 量。例如,該檢索表達(dá)式為Sqrt (abs (vl_v2))〈10,該檢索表達(dá)式具有兩個(gè)變量vl和v2,如 果vl在數(shù)據(jù)庫中建有索引,則將vl確定為該檢索表達(dá)式的目標(biāo)變量;如果vl和v2均在數(shù) 據(jù)庫中建有索引,則可以將vl和v2中的任一個(gè)確定為該檢索表達(dá)式的目標(biāo)變量,或者將兩 個(gè)變量vl和 V2都作為該檢索表達(dá)式的目標(biāo)變量。
[0071] 可選地,在本發(fā)明實(shí)施例中,從該檢索表達(dá)式的變量中選取目標(biāo)變量,包括:
[0072] 根據(jù)該數(shù)據(jù)庫的索引信息,從該檢索表達(dá)式的變量中選取目標(biāo)變量,其中,該數(shù)據(jù) 庫的索引信息中記錄有在該數(shù)據(jù)庫中建立有索引的變量。
[0073] 可選地,在本發(fā)明實(shí)施例中,也可以通過檢測(cè)該檢索表達(dá)式中的一個(gè)變量是否在 數(shù)據(jù)庫中建有有索引,來確定該目標(biāo)變量。更具體地,可以采用現(xiàn)有的任何可以判斷一個(gè)變 量(也可稱之為檢索詞)是否在數(shù)據(jù)庫中建立有索引的方法,來確定該檢索表達(dá)式中的目 標(biāo)變量,本發(fā)明實(shí)施例對(duì)此不做限定。
[0074] 在S140中,可以根據(jù)預(yù)設(shè)的映射表,獲取與該檢索表達(dá)式等價(jià)的Sargable表 達(dá)式;也可以基于該目標(biāo)變量,對(duì)該檢索表達(dá)式反向解析,來獲取與該檢索表達(dá)式等價(jià)的 Sargable表達(dá)式,本發(fā)明實(shí)施例對(duì)此不做限定。
[0075] 可選地,在本發(fā)明實(shí)施例中,S140根據(jù)該匹配表達(dá)式以及該目標(biāo)變量,將該檢索表 達(dá)式轉(zhuǎn)換成等價(jià)的Sargable表達(dá)式,包括:
[0076] 根據(jù)該匹配表達(dá)式以及該目標(biāo)變量,通過預(yù)設(shè)的映射表,確定對(duì)應(yīng)的Sargable表 達(dá)式,其中,該映射表中記錄有該表達(dá)式集中的各表達(dá)式、該各表達(dá)式中的建立有索引的變 量以及Sargable表達(dá)式的映射關(guān)系。
[0077] 具體地,該預(yù)設(shè)的映射表如表1(a)和(b)所示,其中,表1(a)示出了操作符的定 義,表1 (b)中的第一列為預(yù)設(shè)的表達(dá)式集中包括的各表達(dá)式(類型),第二列為示出了各表 達(dá)式中的建立有索引的目標(biāo)變量,第三列為第一列所示的表達(dá)式和第二列所示的目標(biāo)變量 所對(duì)應(yīng)的Sargable表達(dá)式,其中每一行的第一列,第二列和第三列之間具有映射關(guān)系。第 四列給出對(duì)應(yīng)的示例。
[0078] 表 1 (a)
[0079]
【主權(quán)項(xiàng)】
1. 一種用于檢索的方法,其特征在于,包括: 獲取檢索表達(dá)式,所述檢索表達(dá)式用于在數(shù)據(jù)庫中進(jìn)行檢索; 根據(jù)所述檢索表達(dá)式的變量及操作符,從預(yù)設(shè)的表達(dá)式集中選取所述檢索表達(dá)式的匹 配表達(dá)式; 從所述檢索表達(dá)式的變量中選取目標(biāo)變量,所述目標(biāo)變量在所述數(shù)據(jù)庫中建有索引; 根據(jù)所述匹配表達(dá)式W及所述目標(biāo)變量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sarg油le 表達(dá)式; 根據(jù)所述Sarg油1 e表達(dá)式,通過所述索引,在所述數(shù)據(jù)庫中進(jìn)行檢索。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述匹配表達(dá)式W及所述目標(biāo) 變量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sargable表達(dá)式,包括; 根據(jù)所述匹配表達(dá)式W及所述目標(biāo)變量,通過預(yù)設(shè)的映射表,確定對(duì)應(yīng)的Sargable表 達(dá)式,其中,所述映射表中記錄有所述表達(dá)式集中的各表達(dá)式、所述各表達(dá)式中的建立有索 引的變量W及Sarg油le表達(dá)式的映射關(guān)系。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述從所述檢索表達(dá)式的變量中選取 目標(biāo)變量,包括: 根據(jù)所述數(shù)據(jù)庫的索引信息,從所述檢索表達(dá)式的變量中選取目標(biāo)變量,其中,所述數(shù) 據(jù)庫的索引信息中記錄有在所述數(shù)據(jù)庫中建立有索引的變量。
4. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述匹配表達(dá)式W 及所述目標(biāo)變量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sarg油le表達(dá)式,包括: 在所述檢索表達(dá)式為函數(shù)表達(dá)式或操作表達(dá)式的情況下,根據(jù)所述匹配表達(dá)式W及所 述目標(biāo)變量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sarg油le表達(dá)式; 所述方法還包括: 在所述檢索表達(dá)式為條件表達(dá)式的情況下,根據(jù)所述檢索表達(dá)式,在所述數(shù)據(jù)庫中進(jìn) 行檢索。
5. 根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,所述檢索表達(dá)式為連接場景 下的或者查詢場景下的檢索表達(dá)式。
6. -種用于檢索的裝置,其特征在于,包括: 獲取模塊,用于獲取檢索表達(dá)式,所述檢索表達(dá)式用于在數(shù)據(jù)庫中進(jìn)行檢索; 第一選取模塊,用于根據(jù)所述獲取模塊獲取的所述檢索表達(dá)式的變量及操作符,從預(yù) 設(shè)的表達(dá)式集中選取所述檢索表達(dá)式的匹配表達(dá)式; 第二選取模塊,用于從所述獲取模塊獲取的所述檢索表達(dá)式的變量中選取目標(biāo)變量, 所述目標(biāo)變量在所述數(shù)據(jù)庫中建有索引; 轉(zhuǎn)換模塊,用于根據(jù)所述第一選取模塊選取的所述匹配表達(dá)式W及所述第二選取模塊 選取的所述目標(biāo)變量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sargable表達(dá)式; 第一檢索模塊,用于根據(jù)所述轉(zhuǎn)換模塊轉(zhuǎn)換所得的所述Sarg油le表達(dá)式,通過所述索 弓I,在所述數(shù)據(jù)庫中進(jìn)行檢索。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述轉(zhuǎn)換模塊具體用于,根據(jù)所述匹配 表達(dá)式W及所述目標(biāo)變量,通過預(yù)設(shè)的映射表,確定對(duì)應(yīng)的Sarg油le表達(dá)式,其中,所述 映射表中記錄有所述表達(dá)式集中的各表達(dá)式、所述各表達(dá)式中的建立有索引的變量W及 Sarg油le表達(dá)式的映射關(guān)系。
8. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述第二選取模塊具體用于,根據(jù)所 述數(shù)據(jù)庫的索引信息,從所述檢索表達(dá)式的變量中選取目標(biāo)變量,其中,所述數(shù)據(jù)庫的索引 信息中記錄有在所述數(shù)據(jù)庫中建立有索引的變量。
9. 根據(jù)權(quán)利要求6-8中任一項(xiàng)所述的裝置,其特征在于,所述轉(zhuǎn)換模塊具體用于,在所 述檢索表達(dá)式為函數(shù)表達(dá)式或操作表達(dá)式的情況下,根據(jù)所述匹配表達(dá)式W及所述目標(biāo)變 量,將所述檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sarg油le表達(dá)式; 所述裝置還包括: 第二檢索模塊,用于在所述檢索表達(dá)式為條件表達(dá)式的情況下,根據(jù)所述檢索表達(dá)式, 在所述數(shù)據(jù)庫中進(jìn)行檢索。
10. 根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的裝置,其特征在于,所述檢索表達(dá)式為連接場 景下的或者查詢場景下的檢索表達(dá)式。
【專利摘要】本發(fā)明實(shí)施例提供一種用于檢索的方法和裝置,該方法包括:獲取檢索表達(dá)式,該檢索表達(dá)式用于在數(shù)據(jù)庫中進(jìn)行檢索;根據(jù)該檢索表達(dá)式的變量及操作符,從預(yù)設(shè)的表達(dá)式集中選取該檢索表達(dá)式的匹配表達(dá)式;從該檢索表達(dá)式的變量中選取目標(biāo)變量,該目標(biāo)變量在該數(shù)據(jù)庫中建有索引;根據(jù)該匹配表達(dá)式以及該目標(biāo)變量,將該檢索表達(dá)式轉(zhuǎn)換成等價(jià)的Sargable表達(dá)式;根據(jù)該Sargable表達(dá)式,通過該索引,在該數(shù)據(jù)庫中進(jìn)行檢索。本發(fā)明實(shí)施例提供的用于檢索的方法和裝置,能夠有效提高檢索的效率。
【IPC分類】G06F17-30
【公開號(hào)】CN104572990
【申請(qǐng)?zhí)枴緾N201510003870
【發(fā)明人】黃海燕
【申請(qǐng)人】華為技術(shù)有限公司
【公開日】2015年4月29日
【申請(qǐng)日】2015年1月5日