[發(fā)明專利]一種SQL語(yǔ)句的處理方法、裝置、服務(wù)器及存儲(chǔ)介質(zhì)有效
| 申請(qǐng)?zhí)枺?/td> | 201810049711.6 | 申請(qǐng)日: | 2018-01-18 |
| 公開(kāi)(公告)號(hào): | CN108304505B | 公開(kāi)(公告)日: | 2020-09-11 |
| 發(fā)明(設(shè)計(jì))人: | 萬(wàn)偉;耿慧玲 | 申請(qǐng)(專利權(quán))人: | 上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司 |
| 主分類號(hào): | G06F16/242 | 分類號(hào): | G06F16/242 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 201203 上海*** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 sql 語(yǔ)句 處理 方法 裝置 服務(wù)器 存儲(chǔ) 介質(zhì) | ||
1.一種SQL語(yǔ)句的處理方法,其特征在于,包括:
判斷SQL語(yǔ)句是否滿足預(yù)設(shè)的優(yōu)化條件;
如果滿足所述預(yù)設(shè)的優(yōu)化條件,則刪除所述SQL語(yǔ)句中的分組子句;
若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)中有聚集函數(shù),將所述SQL語(yǔ)句中的聚集函數(shù)等價(jià)改寫(xiě)為常量或列;
其中,預(yù)設(shè)的優(yōu)化條件包括:SQL語(yǔ)句中含有分組子句、所操作的表上存在唯一索引且所述唯一索引的至少一個(gè)索引列上有非空約束,以及所述分組子句的項(xiàng)中包含所述唯一索引的所有索引列。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)中有聚集函數(shù),將所述SQL語(yǔ)句中的聚集函數(shù)等價(jià)改寫(xiě)為常量或列,包括如下至少一種情況:
當(dāng)所述聚集函數(shù)為數(shù)量統(tǒng)計(jì)函數(shù),若所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為空,則將所述數(shù)量統(tǒng)計(jì)函數(shù)替換為第一標(biāo)識(shí);若所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為列或特定字符時(shí),則將所述數(shù)量統(tǒng)計(jì)函數(shù)替換為第二標(biāo)識(shí);
當(dāng)所述聚集函數(shù)為第一運(yùn)算函數(shù),將所述第一運(yùn)算函數(shù)替換為所述第一運(yùn)算函數(shù)的參數(shù);
當(dāng)所述聚集函數(shù)為第二運(yùn)算函數(shù),將所述第二運(yùn)算函數(shù)替換為第一標(biāo)識(shí);
其中,所述第一標(biāo)識(shí)和第二標(biāo)識(shí)是不同的預(yù)設(shè)值;所述第一標(biāo)識(shí)用于表示所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為空的情況;所述第二標(biāo)識(shí)用于表示數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為非空的情況;所述第一運(yùn)算函數(shù)包括:SUM()、MIN()、MAX()、AVG()和LISTAGG();所述第二運(yùn)算函數(shù)包括:VARIANCE()、VAR_POP()、STDDEV()和STDDEV_POP()。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,刪除所述SQL語(yǔ)句中的分組子句之后,還包括:
若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)是列或者常數(shù),則保持所述語(yǔ)句;
若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)是類型轉(zhuǎn)換函數(shù)子句或基本運(yùn)算,則對(duì)所述類型轉(zhuǎn)換函數(shù)子句或所述基本運(yùn)算對(duì)應(yīng)的元素再次進(jìn)行分析及等價(jià)改寫(xiě)。
4.一種SQL語(yǔ)句的處理裝置,其特征在于,包括:
判斷模塊,用于判斷SQL語(yǔ)句是否滿足預(yù)設(shè)的優(yōu)化條件;
刪除模塊,用于如果滿足所述預(yù)設(shè)的優(yōu)化條件,則刪除所述SQL語(yǔ)句中的分組子句;
改寫(xiě)模塊,用于若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)中有聚集函數(shù),將所述SQL語(yǔ)句中的聚集函數(shù)等價(jià)改寫(xiě)為常量或列;
其中,預(yù)設(shè)的優(yōu)化條件包括:SQL語(yǔ)句中含有分組子句、所操作的表上存在唯一索引且所述唯一索引的至少一個(gè)索引列上有非空約束,以及所述分組子句的項(xiàng)中包含所述唯一索引的所有索引列。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述改寫(xiě)模塊具體用于如下至少一種情況:
當(dāng)所述聚集函數(shù)為數(shù)量統(tǒng)計(jì)函數(shù),若所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為空,則將所述數(shù)量統(tǒng)計(jì)函數(shù)替換為第一標(biāo)識(shí);若所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為列或特定字符時(shí),則將所述數(shù)量統(tǒng)計(jì)函數(shù)替換為第二標(biāo)識(shí);
當(dāng)所述聚集函數(shù)為第一運(yùn)算函數(shù),將所述第一運(yùn)算函數(shù)替換為所述第一運(yùn)算函數(shù)的參數(shù);
當(dāng)所述聚集函數(shù)為第二運(yùn)算函數(shù),將所述第二運(yùn)算函數(shù)替換為第一標(biāo)識(shí);
其中,所述第一標(biāo)識(shí)和第二標(biāo)識(shí)是不同的預(yù)設(shè)值;所述第一標(biāo)識(shí)用于表示所述數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為空的情況;所述第二標(biāo)識(shí)用于表示數(shù)量統(tǒng)計(jì)函數(shù)的參數(shù)為非空的情況;所述第一運(yùn)算函數(shù)包括:SUM()、MIN()、MAX()、AVG()和LISTAGG();所述第二運(yùn)算函數(shù)包括:VARIANCE()、VAR_POP()、STDDEV()和STDDEV_POP()。
6.根據(jù)權(quán)利要求4所述的裝置,其特征在于,還包括:
語(yǔ)句保持模塊,用于若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)是列或者常數(shù),則保持所述語(yǔ)句;
再次分析改寫(xiě)模塊,用于若所述SQL語(yǔ)句中的查詢項(xiàng)或排序項(xiàng)是類型轉(zhuǎn)換函數(shù)子句或基本運(yùn)算,則對(duì)所述類型轉(zhuǎn)換函數(shù)子句或所述基本運(yùn)算對(duì)應(yīng)的元素再次進(jìn)行分析及等價(jià)改寫(xiě)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司,未經(jīng)上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810049711.6/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種SQL注入檢測(cè)方法及裝置
- SQL檢查方法與裝置
- 一種結(jié)構(gòu)化查詢語(yǔ)言性能優(yōu)化方法及系統(tǒng)
- 使用SQL實(shí)現(xiàn)MDX查詢效果的方法和裝置
- SQL語(yǔ)句處理方法和系統(tǒng)
- 一種SQL審核方法與系統(tǒng)
- 異常SQL語(yǔ)句檢測(cè)方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- SQL代碼信息顯示方法、裝置、計(jì)算機(jī)裝置及存儲(chǔ)介質(zhì)
- PaaS平臺(tái)中SQL執(zhí)行引擎的適配方法及裝置
- 一種SQL預(yù)執(zhí)行優(yōu)化的方法、裝置、設(shè)備及可讀介質(zhì)
- 基于聊天大數(shù)據(jù)知識(shí)庫(kù)的機(jī)器人對(duì)話控制方法和系統(tǒng)
- 基于大數(shù)據(jù)搜索的幽默型機(jī)器人對(duì)話控制方法和系統(tǒng)
- 基于對(duì)話知識(shí)庫(kù)的機(jī)器人對(duì)話控制方法和系統(tǒng)
- 一種自然語(yǔ)言語(yǔ)句評(píng)價(jià)方法及裝置
- 句子級(jí)雙語(yǔ)對(duì)齊方法及系統(tǒng)
- 一種獲取相似語(yǔ)句的方法、裝置、存儲(chǔ)介質(zhì)及電子設(shè)備
- 一種翻譯模型結(jié)果重排序的方法及裝置
- 用于輸出信息的方法、裝置、設(shè)備以及存儲(chǔ)介質(zhì)
- 搜索推薦方法和裝置、服務(wù)器、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 文本識(shí)別方法、裝置、電子設(shè)備和可讀存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





