專利名稱:數據庫表查詢方法和裝置的制作方法
技術領域:
本發(fā)明實施例涉及數據庫領域,尤其涉及一種數據庫表查詢方法和裝置。
背景技術:
數據庫表是一系列二維數組的集合,由縱向的列和橫向的行組成。列由同類的信息組成,每列又稱為一個字段,每列的標題稱為字段名;行包括了若干列信息項,一行數據稱為一個或一條記錄。在數據庫表中,在對數據庫表中的記錄進行包括查詢、修改和刪除在內的各種操作之前,要獲取數據庫表中需要進行操作的記錄?,F有技術首先利用數據庫表索引確定數據庫表中需進行查詢的存儲區(qū)域,然后將所確定的需要進行查詢的存儲區(qū)域加載到內存中進行查詢,進而從該存儲區(qū)域所包含的記錄中獲取需要進行操作的記錄。上述數據庫表索引主要用于存儲數據庫表中每個存儲區(qū)域所包含的記錄在指定列上的最大值和最小值。由于數據庫表索引僅存儲有每個存儲區(qū)域所包含的記錄在指定列上的最大值和最小值,僅能滿足用戶已知需要進行操作的記錄在所述指定列上的取值時的查詢需求,數據庫表查詢的靈活性較差。
發(fā)明內容
本發(fā)明實施例提供一種數據庫表查詢方法和裝置,用于提高數據庫表查詢的靈活性。第一個方面是提供一種數據庫表查詢方法,包括:接收查詢條件;所述查詢條件包括查詢函數以及目標索引值;所述查詢函數用于計算數據庫表中包含的 記錄的索引值;所述目標索引值為待操作記錄的索引值;查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域;每個所述存儲區(qū)域的區(qū)域索引用于指示該存儲區(qū)域中的記錄的索引值的取值范圍;利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算,以得到所述待查詢存儲區(qū)域中的各個記錄的索引值;若所述待查詢存儲區(qū)域中的所有記錄的索引值中,存在與所述目標索引值相同的索引值,則對與所述目標索引值相同的索引值對應的記錄進行操作。在第一方面的第一種可能的實現方式中,所述查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域,包括:將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較,獲取指示的取值范圍包括所述目標索引值的區(qū)域索引,將所獲取的區(qū)域索引所對應的存儲區(qū)域作為所述待查詢存儲區(qū)域。結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較之前,還包括:利用所述查詢函數計算每個所述存儲區(qū)域中的記錄的索引值,并根據計算出的索引值生成每個所述存儲區(qū)域對應的區(qū)域索引。在第一方面的第三種可能的實現方式中,在所述對所述待查詢存儲區(qū)域中所述目標索引值對應的記錄進行操作之后,還包括:若所述操作為修改或刪除,則將所述待查詢存儲區(qū)域的區(qū)域索引刪除。在第一方面的第四種可能的實現方式中,若所述待查詢存儲區(qū)域中的所有記錄的索引值中,不存在與所述目標索引值相同的索引值,則根據計算獲得的所述待查詢存儲區(qū)域中的各個記錄的索引值更新所述待查詢存儲區(qū)域的區(qū)域索引。結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式、第一方面的第三種可能的實現方式和第一方面的第四種可能的實現方式,在第五種可能的實現方式中,在所述利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算之前,還包括:將所述待查詢存儲區(qū)域加載到內存中;所述利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算包括:利用所述查詢函數對加載到內存中的所述待查詢存儲區(qū)域中的記錄進行計算,獲得所述待查詢存儲區(qū)域中的記錄的索引值。結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式、第一方面的第三種可能的實現方式和第一方面的第四種可能的實現方式,在第六種可能的實現方式中,每個所述存儲區(qū)域為數據頁。結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式、第一方面的第三種可能的實現方式和第一方面的第四種可能的實現方式,在第七種可能的實現方式中,每個所述存儲區(qū)域的區(qū)域索引包括該存儲區(qū)域中的記錄的索引值中的最大值和最小值;或者包括所述存儲區(qū)域中的記錄的索引值中的真值;或者包括該存儲區(qū)域中的記錄的索引值中 的假值。第二個方面是提供一種數據庫表查詢裝置,包括:接收模塊,用于接收查詢條件;所述查詢條件包括查詢函數以及目標索引值;所述查詢函數用于計算數據庫表中包含的記錄的索引值;所述目標索引值為待操作記錄的索引值;確定模塊,用于查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域;每個所述存儲區(qū)域的區(qū)域索引用于指示該存儲區(qū)域中的記錄的索引值的取值范圍;計算模塊,用于利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算,以得到所述待查詢存儲區(qū)域中的各個記錄的索引值;操作處理模塊,用于若所述待查詢存儲區(qū)域中的所有記錄的索引值中,存在與所述目標索引值相同的索引值,則對與所述目標索引值相同的索引值對應的記錄進行操作。在第二方面的第一種可能的實現方式中,所述確定模塊,包括:比較單元,用于將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較,獲取指示的取值范圍包括所述目標索引值的區(qū)域索引,將所獲取的區(qū)域索引所對應的存儲區(qū)域作為所述待查詢存儲區(qū)域。結合第二方面的第一種可能的實現方式,在第二種可能的實現方式中,所述確定模塊,還包括:生成單元,用于利用所述查詢函數計算每個所述存儲區(qū)域中的記錄的索引值,并根據計算出的索引值生成每個所述存儲區(qū)域對應的區(qū)域索引。在第二方面的第三種可能的實現方式中,所述裝置還包括:刪除模塊,用于若所述操作為修改或刪除,則將所述待查詢存儲區(qū)域所對應的區(qū)域索引刪除。在第二方面第四種可能的實現方式中,所述裝置還包括:更新模塊,用于若所述待查詢存儲區(qū)域中的所有記錄的索引值中,不存在與所述目標索引值相同的索引值,則根據計算獲得的所述待查詢存儲區(qū)域中的各個記錄的索引值更新所述待查詢存儲區(qū)域的區(qū)域索引。結合第二方面、第二方面的第一種可能的實現方式、第二方面的第二種可能的實現方式、第二方面的第三種可能的實現方式和第二方面的第四種可能的實現方式,在第五種可能的實現方式中,所述裝置,還包括:加載模塊,用于將所述待查詢存儲區(qū)域加載到內存中;所述計算模塊,具體用于利用所述查詢函數對加載到內存中的所述待查詢存儲區(qū)域中的記錄進行計算,獲得所述待查詢存儲區(qū)域中的記錄的索引值。結合第二方面、第二方面的第一種可能的實現方式、第二方面的第二種可能的實現方式、第二方面的第三種可能的實現方式和第二方面的第四種可能的實現方式,在第六種可能的實現方式中,每個所述存儲區(qū)域為數據頁。。結合第二方面、第二方面的第一種可能的實現方式、第二方面的第二種可能的實現方式、第二方面的第三種可能的實現方式和第二方面的第四種可能的實現方式,在第七種可能的實現方式中,每個所述存儲區(qū)域的區(qū)域索引包括該存儲區(qū)域中的記錄的索引值中的最大值和最小值;或者包括所述存儲區(qū)域中的記錄的索引值中的真值;或者包括該存儲區(qū)域中的記錄的索引值中的假值。本發(fā)明實施例提供的數據庫表查詢方法,通過根據查詢條件中的目標索引值,查詢根據查詢條件中的查詢函數對記錄進行計算獲得的索引值生成的區(qū)域索引,從而確定待查詢存儲區(qū)域,再利用查詢條件中的查詢函數對待查詢存儲區(qū)域中的記錄進行計算,進而獲得待查詢存儲區(qū)域中的記錄的索引值,以對待查詢存儲區(qū)域中的目標索引值對應的記錄進行操作,不需要用戶預先獲知進行操作的記錄在指定列上的取值,擴大了區(qū)域索引的適用范圍,由于利用查詢條件中的查詢函數生成區(qū)域索引,使得區(qū)域索引與用戶定義的查詢條件相適應,增強了區(qū)域索引的使用靈活性。
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發(fā)明一實施例提供的數據庫表查詢方法流程示意
圖2為本發(fā)明另一實施例提供的數據庫表查詢方法流程示意圖3為本發(fā)明又一實施例提供的數據庫表查詢裝置結構示意圖;圖4為本發(fā)明又一實施例提供的數據庫表查詢裝置結構示意圖;圖5為本發(fā)明又一實施例提供的數據庫表查詢裝置結構示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1為本發(fā)明一實施例提供的數據庫表查詢方法流程示意圖,如圖1所示,本實施例可以包括:101、接收查詢條件。其中,查詢條件包括查詢函數以及目標索引值;所述查詢函數用于計算數據庫表中包含的記錄的索引值;所述目標索引值為待操作記錄的索引值。102、查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域。其中,每個所述存儲區(qū)域的區(qū)域索引用于指示該存儲區(qū)域中的記錄的索引值的取值范圍,可為:該存儲區(qū)域中的記錄的索引值中的最大值和最小值;或者包括所述存儲區(qū)域中的記錄的索引值中的真值;或者包括該存儲區(qū)域中的記錄的索引值中的假值。每個所述存儲區(qū)域為數據頁。利用所述查詢函數計算每個所述存儲區(qū)域中的記錄的索引值,并根據計算出的索引值生成每個所述存儲區(qū)域對應的區(qū)域索引。將目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較,獲取指示的取值范圍包括所述目標索引值的區(qū)域索引,將所獲取的區(qū)域索引所對應的存儲區(qū)域作為所述待查詢存儲區(qū)域。本實施例中,利用區(qū)域索引確定待查詢存儲區(qū)域,可以實現過濾掉不必進行計算的存儲區(qū)域,加快數據庫表查詢的速度。需要說明的是,上述真值表示利用查詢函數對記錄進行計算所獲得的索引值為非零;上述假值表示利用查詢函數對記錄進行計算所獲得的索引值為零。103、利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算,以得到所述待查詢存儲區(qū)域中的各個記錄的索引值。若待查詢存儲區(qū)域不存在于內存中,將待查詢存儲區(qū)域加載到內存中。利用所述查詢函數對加載到內存中的所述待查詢存儲區(qū)域中的記錄進行計算,獲得所述待查詢存儲區(qū)域中的記錄的索引值。104、若所述待查詢存儲區(qū)域中的所有記錄的索引值中,存在與所述目標索引值相同的索引值,則對與所述目標索引值相同的索引值對應的記錄進行操作。若上述待查詢存儲區(qū)域中的記錄的索引值中,存在上述目標索引值,對上述待查詢存儲區(qū)域中上述目標索引值對應的記錄進行操作。進一步,若104中的操作為修改或刪除, 則將上述待查詢存儲區(qū)域所對應的區(qū)域索引刪除。
進一步,若所述待查詢存儲區(qū)域中的所有記錄的索引值中,不存在與所述目標索引值相同的索引值,則根據計算獲得的所述待查詢存儲區(qū)域中的各個記錄的索引值更新所述待查詢存儲區(qū)域的區(qū)域索引。需要說明的是,區(qū)域索引存儲于內存中,不持久化到磁盤,若數據庫實例重啟動,則區(qū)域索引丟失。本實施例中,利用查詢條件提供的目標索引值和各存儲區(qū)域的區(qū)域索引,確定待查詢存儲區(qū)域從而實現過濾掉不必進行計算的存儲區(qū)域的方式,同樣適用于類似的需要進行過濾的場景。本實施例中,通過根據查詢條件中的目標索引值,查詢根據查詢條件中的查詢函數對記錄進行計算獲得的索引值在各個存儲區(qū)域中的取值范圍生成的區(qū)域索引,從而確定待查詢存儲區(qū)域,再利用查詢條件中的查詢函數對待查詢存儲區(qū)域中的記錄進行計算,進而獲得待查詢存儲區(qū)域中的記錄的索引值,以對待查詢存儲區(qū)域中的目標索引值對應的記錄進行操作,不需要用戶預先獲知進行操作的記錄在指定列上的取值,擴大了區(qū)域索引的適用范圍,由于根據查詢條件中的查詢函數生成區(qū)域索引,使得區(qū)域索引與用戶定義的查詢條件相適應,增強了區(qū)域索引的使用靈活性。圖2為本發(fā)明另一實施例提供的數據庫表查詢方法流程示意圖,如圖2所示,本實施例可以包括:201、生成區(qū)域索引。其中,區(qū)域索引用于指示區(qū)域索引所對應存儲區(qū)域中的記錄的索引值的取值范圍。將需生成區(qū)域索引的存儲區(qū)域加載到內存中,利用查詢函數對上述存儲區(qū)域中的記錄進行計算,獲得上述存儲區(qū)域中的記錄的索引值;根據上述索引值的數據類型,生成區(qū)域索引。若上述索引值的數據類型為整型,生成用于指示上述索引值在上述區(qū)域索引所對應的存儲區(qū)域中的最大值和最小值的區(qū)域索引;若上述索引值的數據類型為布爾型,生成用于指示上述索引值在上述區(qū)域索引所對應的存儲區(qū)域中是否存在真值,或者生成用于指示上述索引值在上述區(qū)域索引所對應的存儲區(qū)域中是否存在假值的區(qū)域索引。例如:對于如下表I所示的名為“merchants”數據庫表,生成區(qū)域索引。表I
權利要求
1.一種數據庫表查詢方法,其特征在于,包括: 接收查詢條件;所述查詢條件包括查詢函數以及目標索引值;所述查詢函數用于計算數據庫表中包含的記錄的索引值;所述目標索引值為待操作記錄的索引值; 查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域;每個所述存儲區(qū)域的區(qū)域索引用于指示該存儲區(qū)域中的記錄的索引值的取值范圍; 利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算,以得到所述待查詢存儲區(qū)域中的各個記錄的索引值; 若所述待查詢存儲區(qū)域中的所有記錄的索引值中,存在與所述目標索引值相同的索引值,則對與所述目標索引值相同 的索引值對應的記錄進行操作。
2.根據權利要求1所述的數據庫表查詢方法,其特征在于,所述查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域,包括: 將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較,獲取指示的取值范圍包括所述目標索引值的區(qū)域索引,將所獲取的區(qū)域索引所對應的存儲區(qū)域作為所述待查詢存儲區(qū)域。
3.根據權利要求2所述的數據庫表查詢方法,其特征在于,所述將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較之前,還包括: 利用所述查詢函數計算每個所述存儲區(qū)域中的記錄的索引值,并根據計算出的索引值生成每個所述存儲區(qū)域對應的區(qū)域索引。
4.根據權利要求1所述的數據庫表查詢方法,其特征在于,在所述對所述待查詢存儲區(qū)域中所述目標索引值對應的記錄進行操作之后,還包括: 若所述操作為修改或刪除,則將所述待查詢存儲區(qū)域的區(qū)域索引刪除。
5.根據權利要求1所述的數據庫表查詢方法,其特征在于,還包括: 若所述待查詢存儲區(qū)域中的所有記錄的索引值中,不存在與所述目標索引值相同的索引值,則根據計算獲得的所述待查詢存儲區(qū)域中的各個記錄的索引值更新所述待查詢存儲區(qū)域的區(qū)域索引。
6.根據權利要求1-5任一項所述的數據庫表查詢方法,其特征在于,在所述利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算之前,還包括: 將所述待查詢存儲區(qū)域加載到內存中; 所述利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算包括:利用所述查詢函數對加載到內存中的所述待查詢存儲區(qū)域中的記錄進行計算,獲得所述待查詢存儲區(qū)域中的記錄的索引值。
7.根據權利要求1-5任一項所述的數據庫表查詢方法,其特征在于,每個所述存儲區(qū)域為數據頁。
8.根據權利要求1-5任一項所述的數據庫表查詢方法,其特征在于,每個所述存儲區(qū)域的區(qū)域索引包括該存儲區(qū)域中的記錄的索引值中的最大值和最小值;或者包括所述存儲區(qū)域中的記錄的索引值中的真值;或者包括該存儲區(qū)域中的記錄的索引值中的假值。
9.一種數據庫表查詢裝置,其特征在于,包括:接收模塊,用于接收查詢條件;所述查詢條件包括查詢函數以及目標索引值;所述查詢函數用于計算數據庫表中包含的記錄的索引值;所述目標索引值為待操作記錄的索引值; 確定模塊,用于查詢所述數據庫表中各個存儲區(qū)域的區(qū)域索引,根據所述目標索引值和查詢到的區(qū)域索引確定待查詢存儲區(qū)域;每個所述存儲區(qū)域的區(qū)域索引用于指示該存儲區(qū)域中的記錄的索引值的取值范圍; 計算模塊,用于利用所述查詢函數分別對所述待查詢存儲區(qū)域中的每個記錄進行計算,以得到所述待查詢存儲區(qū)域中的各個記錄的索引值; 操作處理模塊,用于若所述待查詢存儲區(qū)域中的所有記錄的索引值中,存在與所述目標索引值相同的索引值,則對與所述目標索引值相同的索引值對應的記錄進行操作。
10.根據權利要求9所述的數據庫表查詢裝置,其特征在于,所述確定模塊,包括: 比較單元,用于將所述目標索引值分別與每個所述存儲區(qū)域的區(qū)域索引指示的取值范圍進行比較,獲取指示的取值范圍包括所述目標索引值的區(qū)域索引,將所獲取的區(qū)域索引所對應的存儲區(qū)域作為所述待查詢存儲區(qū)域。
11.根據權利要求10所述的數據庫表查詢裝置,其特征在于,所述確定模塊,還包括: 生成單元,用于利用所述查詢函數計算每個所述存儲區(qū)域中的記錄的索引值,并根據 計算出的索引值生成 每個所述存儲區(qū)域對應的區(qū)域索引。
12.根據權利要求9所述的數據庫表查詢裝置,其特征在于,所述裝置還包括: 刪除模塊,用于若所述操作為修改或刪除,則將所述待查詢存儲區(qū)域所對應的區(qū)域索引刪除。
13.根據權利要求9所述的數據庫表查詢裝置,其特征在于,所述裝置還包括: 更新模塊,用于若所述待查詢存儲區(qū)域中的所有記錄的索引值中,不存在與所述目標索引值相同的索引值,則根據計算獲得的所述待查詢存儲區(qū)域中的各個記錄的索引值更新所述待查詢存儲區(qū)域的區(qū)域索引。
14.根據權利要求9-13任一項所述的數據庫表查詢裝置,其特征在于,所述裝置,還包括: 加載模塊,用于將所述待查詢存儲區(qū)域加載到內存中; 所述計算模塊,具體用于利用所述查詢函數對加載到內存中的所述待查詢存儲區(qū)域中的記錄進行計算,獲得所述待查詢存儲區(qū)域中的記錄的索引值。
15.根據權利要求9-13任一項所述的數據庫表查詢裝置,其特征在于,每個所述存儲區(qū)域為數據頁。
16.根據權利要求9-13任一項所述的數據庫表查詢裝置,其特征在于,每個所述存儲區(qū)域的區(qū)域索引包括該存儲區(qū)域中的記錄的索引值中的最大值和最小值;或者包括所述存儲區(qū)域中的記錄的索引值中的真值;或者包括該存儲區(qū)域中的記錄的索引值中的假值。
全文摘要
本發(fā)明實施例提供一種數據庫表查詢方法和裝置,通過根據查詢條件中的目標索引值,查詢根據查詢條件中的查詢函數對記錄進行計算獲得的索引值生成的區(qū)域索引,從而確定待查詢存儲區(qū)域,再利用查詢條件中的查詢函數對待查詢存儲區(qū)域中的記錄進行計算,進而獲得待查詢存儲區(qū)域中的記錄的索引值,以對待查詢存儲區(qū)域中的目標索引值對應的記錄進行操作,不需要用戶預先獲知進行操作的記錄在指定列上的取值,擴大了區(qū)域索引的適用范圍,由于利用查詢條件中的查詢函數生成區(qū)域索引,使得區(qū)域索引與用戶定義的查詢條件相適應,增強了區(qū)域索引的使用靈活性。
文檔編號G06F17/30GK103226610SQ20131016457
公開日2013年7月31日 申請日期2013年5月7日 優(yōu)先權日2013年5月7日
發(fā)明者杜培亮, 孫東旺, 劉輝軍 申請人:華為技術有限公司