一種基于主鍵字段進行分頁查詢的查詢設備及其方法
【專利摘要】本發(fā)明提供了一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備及其方法。該查詢方法獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),所述相關參數(shù)包括一主鍵字段、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)、每頁顯示的記錄條數(shù)、當前組的選中頁的頁碼;獲取分頁查詢的初始查詢條件;判斷用戶查詢操作的查詢類型;以及根據(jù)查詢類型來生成與所述初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值。相比于現(xiàn)有技術,本發(fā)明的查詢方法的響應時間長短與數(shù)據(jù)庫中的數(shù)據(jù)量無關,僅僅與匹配查詢條件和最終的結果集大小有關,因而在大數(shù)據(jù)量下能夠快速查找符合查詢條件的記錄,并對記錄進行快速和高效地分頁顯示。
【專利說明】一種基于主鍵字段進行分頁查詢的查詢設備及其方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)庫查詢技術,尤其涉及一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備及其查詢方法。
【背景技術】
[0002]隨著企業(yè)信息化的發(fā)展,用來表示各類信息的數(shù)據(jù)量也越來越龐大。對此,企業(yè)往往會將這些數(shù)據(jù)存儲于各種各樣的數(shù)據(jù)庫中,例如,本地數(shù)據(jù)庫、網(wǎng)絡數(shù)據(jù)庫等。然而,對已存儲的數(shù)據(jù)進行展現(xiàn)或者分析時,必然要涉及到大量數(shù)據(jù)的查詢顯示,因而數(shù)據(jù)的分頁查詢是工程師們不可避免會遇到的問題。
[0003]現(xiàn)有技術中的一種解決方案是在于,針對數(shù)據(jù)的分頁顯示,將數(shù)據(jù)庫內的符合查詢條件的所有數(shù)據(jù)數(shù)量都獲取到,然后根據(jù)每頁顯示的數(shù)據(jù)條數(shù)計算總共的頁數(shù),并生成分頁鏈接。此外,對于Web數(shù)據(jù)庫來說,分頁瀏覽功能也是非常重要的。然而,對于非常大的數(shù)據(jù)模型而言,在分頁查詢時,若按照傳統(tǒng)的每次都加載整個數(shù)據(jù)源的方法是非常浪費資源的,雖然現(xiàn)行的分頁方法改進為僅僅檢索頁面大小的塊區(qū)數(shù)據(jù),而非檢索所有的數(shù)據(jù),然后單步執(zhí)行當前行。不過,上述解決方案仍然會導致分頁查詢的速度較慢,無法滿足查詢用戶的數(shù)據(jù)顯示需求。
[0004]有鑒于此,如何設計一種在查詢數(shù)據(jù)庫中進行分頁查詢的解決方案,即使在數(shù)據(jù)庫中的數(shù)據(jù)量明顯增加時,也不會影響分頁查詢的速度和效率,是業(yè)內相關技術人員亟待解決的一項課題。
【發(fā)明內容】
[0005]針對現(xiàn)有技術中的查詢數(shù)據(jù)庫在進行分頁查詢時所存在的上述缺陷,本發(fā)明提供了一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備及其方法。
[0006]依據(jù)本發(fā)明的一個方面,提供了一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢方法,包括以下步驟:
[0007]獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),所述相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GR0UP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM);
[0008]獲取分頁查詢的初始查詢條件(WHERE_SQL);
[0009]判斷用戶查詢操作的查詢類型;以及
[0010]根據(jù)查詢類型來生成與所述初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID[GR0UP_SIZE+2])。
[0011]在其中的一實施例中,查詢類型為首次查詢、組內換頁查詢或跨組查詢。
[0012]在其中的一實施例中,當所述查詢操作是首次查詢時,根據(jù)用戶指定的所述初始查詢條件(WHERE_SQL)以及所述主鍵字段(PRI_KEY),查找一組主鍵字段的值;
[0013]將該組主鍵字段的值按照所述分頁數(shù)(GR0UP_SIZE)來提取所述每頁起始記錄對應的主鍵值到存儲數(shù)組中;
[0014]在所述初始查詢條件(WHERE_SQL)中增加條件,PRI_KEY〈=PAGE_ID[PAGE_NUM] andPRI_KEY>=PAGE_ID [PAGE_NUM+1];以及
[0015]返回所述匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值。
[0016]在其中的一實施例中,該查詢方法還包括:將所返回的匹配查詢條件作為最終的查詢條件進行查詢記錄的查詢和顯示。
[0017]在其中的一實施例中,當所述查詢操作是組內換頁查詢時,在所述初始查詢條件中增加條件,返回所述匹配查詢條件,該增加的條件為:
[0018]PRI_KEY〈=PAGE_ID[PAGE_NUM]and
[0019]PRI_KEY>=PAGE_ID[PAGE_NUM+1]。
[0020]在其中的一實施例中,當所述查詢類型并非首次查詢和組內換頁查詢時,確定跨組查詢操作是上一組查詢還是下一組查詢。較佳地,當所述跨組查詢操作是上一組查詢時,根據(jù)所述初始查詢條件(WHERE_SQL)和所述主鍵字段(PRI_KEY),根據(jù)第一查詢條件查找上一組主鍵字段的值,該第一查詢條件為PRI_KEY>=PAGE_ID[0]。當所述跨組查詢操作是下一組查詢時,根據(jù)所述初始查詢條件(WHERE_SQL)和所述主鍵字段(PRI_KEY),根據(jù)第二查詢條件查找下一組主鍵字段的值,該第二查詢條件為PRI_KEY>=PAGE_ID[GR0UP_SIZE+1]。
[0021]依據(jù)本發(fā)明的另一個方面,提供了一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備,包括:
[0022]參數(shù)獲取單元,用于獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),所述相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GR0UP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM);
[0023]查詢條件獲取單元,用于獲取分頁查詢的初始查詢條件(WHERE_SQL);
[0024]判斷單元,用于判斷用戶查詢操作的查詢類型;以及
[0025]輸出單元,用于根據(jù)查詢類型來生成與所述初始查詢條件相應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID [GR0UP_SIZE+2])。
[0026]在其中的一實施例中,查詢類型為首次查詢、組內換頁查詢或跨組查詢。當所述查詢操作是首次查詢時,所述輸出單元用于根據(jù)用戶指定的所述初始查詢條件(WHERE_SQL)以及所述主鍵字段(PRI_KEY),查找一組主鍵字段的值;將該組主鍵字段的值按照所述分頁數(shù)(GR0UP_SIZE)來提取所述每頁起始記錄對應的主鍵值到存儲數(shù)組中;在所述初始查詢條件(WHERE_SQL)中增加條件;以及返回所述匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值,其中,新增加的條件為
[0027]PRI_KEY〈=PAGE_ID[PAGE_NUM]and
[0028]PRI_KEY>=PAGE_ID[PAGE_NUM+1]。
[0029]采用本發(fā)明的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備及其方法,獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),該相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GR0UP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM ),并獲取分頁查詢的初始查詢條件(WHERE_SQL ),然后判斷用戶查詢操作的查詢類型,從而根據(jù)查詢類型來生成與所述初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID[GR0UP_SIZE+2])。相比于現(xiàn)有技術,本發(fā)明的查詢方法的響應時間長短與數(shù)據(jù)庫中的數(shù)據(jù)量無關,僅僅與匹配查詢條件和最終的結果集大小有關,因而在大數(shù)據(jù)量下能夠快速查找符合查詢條件的記錄,并對記錄進行快速和高效地分頁顯示。
【專利附圖】
【附圖說明】
[0030]讀者在參照附圖閱讀了本發(fā)明的【具體實施方式】以后,將會更清楚地了解本發(fā)明的各個方面。其中,
[0031]圖1示出依據(jù)本發(fā)明一實施方式的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢方法流程圖;
[0032]圖2示出使用圖1的查詢方法進行首次查詢操作的流程圖;
[0033]圖3示出使用圖1的查詢方法進行組內換頁查詢的流程圖;
[0034]圖4示出使用圖1的查詢方法進行跨組查詢操作的流程圖;以及
[0035]圖5示出依據(jù)本發(fā)明另一實施方式的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備結構框圖。
【具體實施方式】
[0036]為了使本申請所揭示的技術內容更加詳盡與完備,可參照附圖以及本發(fā)明的下述各種具體實施例,附圖中相同的標記代表相同或相似的組件。然而,本領域的普通技術人員應當理解,下文中所提供的實施例并非用來限制本發(fā)明所涵蓋的范圍。此外,附圖僅僅用于示意性地加以說明,并未依照其原尺寸進行繪制。
[0037]下面參照附圖,對本發(fā)明各個方面的【具體實施方式】作進一步的詳細描述。
[0038]圖1示出依據(jù)本發(fā)明一實施方式的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢方法流程圖。
[0039]參照圖1,在該查詢方法中,首先執(zhí)行步驟S11,獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),該相關參數(shù)包括一主鍵字段PRI_KEY、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)GR0UP_SIZE、每頁顯示的記錄條數(shù)PAGE_SIZE、當前組的選中頁的頁碼PAGE_NUM。例如,頁面展示的分頁信息包括:上一組第I頁第2頁...第GR0UP_SIZE頁下一組。
[0040]接著,執(zhí)行步驟S13,獲取分頁查詢的初始查詢條件WHERE_SQL。本領域的技術人員應當理解,步驟Sll和S13的順序可以調換。然后,在步驟S15中,判斷用戶查詢操作的查詢類型。例如,該查詢類型為首次查詢、組內換頁查詢或跨組查詢。最后,執(zhí)行步驟S17,根據(jù)查詢類型來生成與初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值 PAGE_ID[GR0UP_SIZE+2]。
[0041]由上述可知,本發(fā)明的查詢方法的響應時間長短與數(shù)據(jù)庫中的數(shù)據(jù)量無關,僅僅與匹配查詢條件和最終的結果集大小有關,因而在大數(shù)據(jù)量下能夠快速查找符合查詢條件的記錄,并對記錄進行快速和高效地分頁顯示。經(jīng)數(shù)據(jù)測試表明,查詢的條件越多,最終結果集越大,響應時間就越長。在測試運行中,若相關參數(shù)的個數(shù)小于50,最終結果集大小為十萬級的情況下,使用該查詢方法的平均響應時間小于I秒。
[0042]圖2示出使用圖1的查詢方法進行首次查詢操作的流程圖。參照圖2,當查詢操作是首次查詢時,在步驟S21中,根據(jù)用戶指定的初始查詢條件WHERE_SQL以及主鍵字段PRI_KEY,查找一組主鍵字段的值。在步驟S23中,將該組主鍵字段的值按照分頁數(shù)GROUP_SIZE來提取每頁起始記錄對應的主鍵值到存儲數(shù)組中。在步驟S25中,假設查詢結果按照主鍵由大到小排序,于初始查詢條件WHERE_SQL中增加條件,
[0043]PRI_KEY〈=PAGE_ID[PAGE_NUM]and
[0044]PRI_KEY>=PAGE_ID[PAGE_NUM+1],
[0045]若主鍵由小到大排序,則增加的條件對應地變換為:
[0046]PRI_KEY〈=PAGE_ID[PAGE_NUM+1]and
[0047]PRI_KEY>=PAGE_ID[PAGE_NUM]。
[0048]最后,在步驟S27中,返回更改后的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值。較佳地,該查詢方法還可將所返回的匹配查詢條件作為最終的查詢條件進行查詢記錄的查詢和顯示。
[0049]圖3示出使用圖1的查詢方法進行組內換頁查詢的流程圖。參照圖3,當用戶的查詢操作并非首次查詢而是組內換頁查詢時,在步驟S31中,在初始查詢條件中增加條件,PRI_KEY〈=PAGE_ID [PAGE_NUM] and PRI_KEY>=PAGE_ID [PAGE_NUM+1],然后在步驟 S33 中,返回匹配查詢條件。
[0050]圖4示出使用圖1的查詢方法進行跨組查詢操作的流程圖。參照圖4,當用戶的查詢操作既不是首次查詢也不是組內換頁查詢,即,跨組查詢時,通過步驟S41和S45,當跨組查詢操作是上一組查詢時,根據(jù)初始查詢條件WHERE_SQL和主鍵字段PRI_KEY,根據(jù)第一查詢條件查找上一組主鍵字段的值,該第一查詢條件為PRI_KEY>=PAGE_ID[0]。通過步驟S43和S47,當跨組查詢操作是下一組查詢時,根據(jù)初始查詢條件WHERE_SQL和主鍵字段PR1.KEY,根據(jù)第二查詢條件查找下一組主鍵字段的值,該第二查詢條件為PRI_KEY>=PAGE_ID[GR0UP_SIZE+1]。
[0051]圖5示出依據(jù)本發(fā)明另一實施方式的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備結構框圖。
[0052]參照圖5,該查詢設備包括參數(shù)獲取單元50、查詢條件獲取單元52、判斷單元54和輸出單元56。
[0053]類似于圖1的查詢方法,參數(shù)獲取單元50獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),該相關參數(shù)包括一主鍵字段PRI_KEY、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)GR0UP_SIZE、每頁顯示的記錄條數(shù)PAGE_SIZE、當前組的選中頁的頁碼PAGE_NUM。查詢條件獲取單元52獲取分頁查詢的初始查詢條件WHERE_SQL。
[0054]判斷單元54判斷用戶查詢操作的查詢類型,諸如首次查詢、組內換頁查詢或跨組查詢。輸出單元56根據(jù)查詢類型來生成與初始查詢條件相應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值PAGE_ID [GR0UP_SIZE+2]。
[0055]在一具體實施例中,當查詢操作是首次查詢時,輸出單元56根據(jù)用戶指定的初始查詢條件WHERE_SQL以及主鍵字段PRI_KEY,查找一組主鍵字段的值,并將該組主鍵字段的值按照分頁數(shù)GR0UP_SIZE來提取每頁起始記錄對應的主鍵值到存儲數(shù)組中,然后在初始查詢條件WHERE_SQL中增加條件,最后返回匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值,其中,新增加的條件為PRI_KEY〈=PAGE_ID[PAGE_NUM]and PRI_KEY>=PAGE_ID[PAGE_NUM+1]。[0056]采用本發(fā)明的基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備及其方法,獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),該相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GR0UP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM ),并獲取分頁查詢的初始查詢條件(WHERE_SQL ),然后判斷用戶查詢操作的查詢類型,從而根據(jù)查詢類型來生成與所述初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID[GR0UP_SIZE+2])。相比于現(xiàn)有技術,本發(fā)明的查詢方法的響應時間長短與數(shù)據(jù)庫中的數(shù)據(jù)量無關,僅僅與匹配查詢條件和最終的結果集大小有關,因而在大數(shù)據(jù)量下能夠快速查找符合查詢條件的記錄,并對記錄進行快速和高效地分頁顯示。
[0057]上文中,參照附圖描述了本發(fā)明的【具體實施方式】。但是,本領域中的普通技術人員能夠理解,在不偏離本發(fā)明的精神和范圍的情況下,還可以對本發(fā)明的【具體實施方式】作各種變更和替換。這些變更和替換都落在本發(fā)明權利要求書所限定的范圍內。
【權利要求】
1.一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢方法,其特征在于,該查詢方法包括以下步驟: 獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),所述相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GROUP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM); 獲取分頁查詢的初始查詢條件(WHERE_SQL); 判斷用戶查詢操作的查詢類型;以及 根據(jù)查詢類型來生成與所述初始查詢條件相對應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID[GR0UP_SIZE+2])。
2.根據(jù)權利要求1所述的查詢方法,其特征在于,所述查詢類型為首次查詢、組內換頁查詢或跨組查詢。
3.根據(jù)權利要求2所述的查詢方法,其特征在于,當所述查詢操作是首次查詢時, 根據(jù)用戶指定的所述初始查詢條件(WHERE_SQL)以及所述主鍵字段(PRI_KEY),查找一組主鍵字段的值; 將該組主鍵字段的值按照所述分頁數(shù)(GROUP_SIZE)來提取所述每頁起始記錄對應的主鍵值到存儲數(shù)組中; 在所述初始查詢條件(WHERE_SQL)中增加條件,PRI_KEY〈=PAGE_ID [PAGE_NUM] andPRI_KEY>=PAGE_ID [PAGE_NUM+1];以及 返回所述匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值。
4.根據(jù)權利要求3所述的查詢方法,其特征在于,該查詢方法還包括:將所返回的匹配查詢條件作為最終的查詢條件進行查詢記錄的查詢和顯示。
5.根據(jù)權利要求2所述的查詢方法,其特征在于,當所述查詢操作是組內換頁查詢時,在所述初始查詢條件中增加條件,PRI_KEY<=PAGE_ID [PAGE_NUM] and PRI_KEY>=PAGE_ID[PAGE_NUM+1],返回所述匹配查詢條件。
6.根據(jù)權利要求2所述的查詢方法,其特征在于,當所述查詢類型并非首次查詢和組內換頁查詢時,確定跨組查詢操作是上一組查詢還是下一組查詢。
7.根據(jù)權利要求6所述的查詢方法,其特征在于,當所述跨組查詢操作是上一組查詢時,根據(jù)所述初始查詢條件(WHERE_SQL)和所述主鍵字段(PRI_KEY),根據(jù)第一查詢條件查找上一組主鍵字段的值,該第一查詢條件為PRI_KEY>=PAGE_ID[0]。
8.根據(jù)權利要求6所述的查詢方法,其特征在于,當所述跨組查詢操作是下一組查詢時,根據(jù)所述初始查詢條件(WHERE_SQL)和所述主鍵字段(PRI_KEY),根據(jù)第二查詢條件查找下一組主鍵字段的值,該第二查詢條件為PRI_KEY>=PAGE_ID[GR0UP_SIZE+1]。
9.一種基于主鍵字段在查詢數(shù)據(jù)庫中進行分頁查詢的查詢設備,其特征在于,該查詢設備包括: 參數(shù)獲取單元,用于獲取頁面上展示的每組數(shù)據(jù)包的相關參數(shù),所述相關參數(shù)包括一主鍵字段(PRI_KEY)、頁面上展示的每組數(shù)據(jù)包含的分頁數(shù)(GROUP_SIZE)、每頁顯示的記錄條數(shù)(PAGE_SIZE)、當前組的選中頁的頁碼(PAGE_NUM); 查詢條件獲取單元,用于獲取分頁查詢的初始查詢條件(WHERE_SQL); 判斷單元,用于判斷用戶查詢 操作的查詢類型;以及輸出單元,用于根據(jù)查詢類型來生成與所述初始查詢條件相應的匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值(PAGE_ID [GR0UP_SIZE+2])。
10.根據(jù)權利要求9所述的查詢設備,其特征在于,所述查詢類型為首次查詢、組內換頁查詢或跨組查詢, 當所述查詢操作是首次查詢時,所述輸出單元用于根據(jù)用戶指定的所述初始查詢條件(WHERE_SQL)以及所述主鍵字段(PRI_KEY),查找一組主鍵字段的值;將該組主鍵字段的值按照所述分頁數(shù)(GROUP_SIZE)來提取所述每頁起始記錄對應的主鍵值到存儲數(shù)組中;在所述初始查詢條件(WHERE_SQL)中增加條件;以及返回所述匹配查詢條件以及存儲組內的包含每頁起始記錄的主鍵值,其中,新增加的條件為PRI_KEY<=PAGE_ID[PAGE_NUM]andPRI_KEY>=PAG E_ID[PAGE_NUM+1]。
【文檔編號】G06F17/30GK103886022SQ201410062355
【公開日】2014年6月25日 申請日期:2014年2月24日 優(yōu)先權日:2014年2月24日
【發(fā)明者】曾洪寧 申請人:上海上訊信息技術股份有限公司