[發明專利]一種數據庫最值查詢方法和裝置在審
| 申請號: | 202010630358.8 | 申請日: | 2020-07-03 |
| 公開(公告)號: | CN113886414A | 公開(公告)日: | 2022-01-04 |
| 發明(設計)人: | 魏琪鷺;付裕;呂達 | 申請(專利權)人: | 中興通訊股份有限公司 |
| 主分類號: | G06F16/242 | 分類號: | G06F16/242;G06F16/22;G06F16/28;G06F16/2453;G06F17/15 |
| 代理公司: | 北京元本知識產權代理事務所(普通合伙) 11308 | 代理人: | 金海榮 |
| 地址: | 518057 廣東省深圳市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 數據庫 查詢 方法 裝置 | ||
本發明公開了一種數據庫最值查詢方法和裝置。本發明的一種數據庫最值查詢方法包括:在進行最值查詢時,判斷過濾字段是否為索引字段;若判斷過濾字段不是索引字段時,通過對使用索引字段關聯的索引掃描記錄進行標記,得到用于最值查詢的索引掃描記錄;在得到所述用于最值查詢的索引掃描記錄后,執行最值查詢的結構化查詢語句SQL,對最值進行查詢。
技術領域
本發明涉及數據庫領域,特別涉及一種數據庫最值查詢方法和裝置。
背景技術
數據庫業務經常需要快速地查詢某一條件下表中的數據的最值。對于MySQL、Oracle等關系型數據庫,過濾的條件會影響數據搜索策略:當過濾字段是索引時,至少為索引或其他更高效的查詢策略,查詢效率較高;但是當過濾字段非索引時,查詢策略如圖1所示,為全表掃描,全表掃描耗時久,查詢效率低,不能有效利用索引字段,計算最值過程中多次讀寫內存。
MySQL、Oracle等關系型數據庫在過濾字段不是索引字段時求索引字段的最大值(MAX)、最小值(MIN)的場景下,沒有有效使用索引字段的全部信息,進行全表掃描導致效率低下。該場景對應的SQL(Structured Query Language)語句類型為:“SELECT MAX(索引字段)/MIN(索引字段)FROM table_name WHERE非索引字段=常量”,其中過濾條件中,非索引字段與常量間可以采用其他類型的比較。本發明從該點著手,解決該場景下求最值函數時效率低下的問題。
發明內容
本發明的目的是提供一種數據庫最值查詢方法及裝置,用于解決現有技術存在的過濾字段不是索引字段時求索引字段的最值場景下,求最值函數時效率低下的技術問題。
根據本發明的第一方面,提供了一種數據庫最值查詢方法,包括:
在進行最值查詢時,判斷過濾字段是否為索引字段;
若判斷過濾字段不是索引字段時,通過對使用索引字段關聯的索引掃描記錄進行標記,得到用于最值查詢的索引掃描記錄;
在得到所述用于最值查詢的索引掃描記錄后,執行最值查詢的結構化查詢語句SQL,對最值進行查詢;
若判斷過濾字段是索引字段時,則在執行結構化查詢語句SQL時,使用索引字段進行過濾,對最值進行查詢。
優選地,執行最值查詢的結構化查詢語句SQL包括:針對結構化查詢語句SQL中的最值函數,掃描和過濾所述用于最值查詢的索引掃描記錄,直至找到滿足條件則掃描記錄。
優選地,針對結構化查詢語句SQL中的最值函數,掃描和過濾用于最值查詢的索引掃描記錄包括:
判斷結構化查詢語句SQL中的最值函數是否為MAX函數;
若判斷結構化查詢語句SQL中最值函數為MAX函數,則從索引掃描記錄的最后一條記錄向前掃描,得到每一條第一掃描記錄;
用結構化查詢語句SQL中的WHERE條件過濾所得到的每一條掃描記錄,直至找到滿足條件則掃描記錄。
優選地,針對結構化查詢語句SQL中的最值函數,掃描和過濾用于最值查詢的索引掃描記錄包括:
判斷結構化查詢語句SQL中的最值函數是否為MIN函數;
若判斷結構化查詢語句SQL中的最值函數為MIN函數,則從索引掃描記錄的第一條記錄向后掃描,得到每一條第二掃描記錄;
用結構化查詢語句SQL中的WHERE條件過濾所得到的每一條第二掃描記錄,直至找到滿足條件則掃描記錄。
本發明的上述方法還包括在判斷過濾字段是否為索引字段之前進行的監聽求最值的查詢語句。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中興通訊股份有限公司,未經中興通訊股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010630358.8/2.html,轉載請聲明來源鉆瓜專利網。





