本申請涉及數據庫,尤其涉及一種查詢語句轉換方法、裝置、設備及存儲介質。
背景技術:
1、數據庫的查詢語句中包括各種查詢條件,查詢設備在執行查詢語句時,就可以對待查詢表中的數據是否滿足查詢條件進行判斷,并最終查詢得到滿足條件的數據。
2、在現有技術中,一些查詢語句中的查詢條件包括待查詢表中的數據與其他表的數據進行組合操作,這種查詢語句中對待查詢表的數據與其他表的數據進行的組合操作被稱為集合操作。
3、采用現有技術,查詢設備在執行包括集合操作的查詢語句時,需要在不同表之間進行的數據量較大、復雜度較高的操作,導致了執行包括集合操作的查詢語句的處理效率較低的問題。
技術實現思路
1、本申請提供一種查詢語句轉換方法、裝置、設備及存儲介質,以解決現有技術中執行包括集合操作的查詢語句的處理效率較低的技術問題。
2、本申請第一方面提供一種查詢語句轉換方法,包括:獲取數據庫的第一查詢語句;當所述第一查詢語句包括第一表和第二表的目標操作時,根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,所述目標操作包括集合操作、或半連接操作、或反連接操作;若確定改寫所述第一查詢語句,則對所述第一查詢語句進行改寫,獲得第二查詢語句,所述第二查詢語句的查詢效率高于所述第一查詢語句的查詢效率;執行所述第二查詢語句。
3、可選的,所述目標操作為集合操作,所述根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,包括:當所述過濾條件數量小于或等于預設數量閾值、所述數據量大于或等于預設數據量閾值時,確定改寫所述第一查詢語句。所述對所述第一查詢語句進行改寫,獲得第二查詢語句,包括:根據所述集合操作的類型,將所述第一查詢語句中的所述集合操作轉換為等效的半連接操作或反連接操作,獲得所述第二查詢語句,所述集合操作的類型包括去重類型、不去重類型。
4、可選的,所述根據所述集合操作的類型,將所述第一查詢語句中的所述集合操作轉換為等效的半連接操作或反連接操作,獲得第二查詢語句,包括:當所述集合操作的類型為去重類型時,將所述集合操作改寫為包括去重操作的半連接操作或反連接操作,得到所述第二查詢語句。
5、可選的,所述將所述集合操作改寫為包括去重操作的半連接操作或反連接操作得到所述第二查詢語句,包括:當所述集合操作為差集操作時,將所述差集操作改寫為包括去重操作的反連接操作,得到所述第二查詢語句;或者,當所述集合操作為交集操作時,將所述交集操作改寫為包括去重操作的半連接操作,得到所述第二查詢語句。
6、可選的,所述將所述差集操作改寫為包括去重操作的反連接操作,得到所述第二查詢語句,包括:當所述第一查詢語句中的至少一個目標列為未對空值進行過濾的列時,將所述差集操作轉換為包括去重操作的反連接操作;使用用于處理空值的邏輯操作函數封裝所述目標列的等值條件,得到所述第二查詢語句。
7、可選的,所述根據所述集合操作的類型,將所述第一查詢語句中的所述集合操作轉換為等效的半連接操作或反連接操作,獲得第二查詢語句,包括:當所述集合操作的類型為不去重類型,且所述集合操作為交集操作時,將所述交集操作改寫為不包括去重操作的半連接操作,得到所述第二查詢語句。
8、可選的,所述將所述集合操作改寫為包括去重操作的半連接操作或反連接操作,得到所述第二查詢語句,包括:將所述集合操作的第一個分支的目標列作為條件,與所述集合操作的其余分支的目標列構造第一等值連接條件;根據所述第一等值連接條件,得到所述半連接操作或所述反連接操作的子查詢,所述子查詢的目標列為默認值;將所述子查詢掛載在所述第一個分支的條件子句后,得到候選第二查詢語句;為所述候選第二查詢語句的目標列添加去重操作,得到所述第二查詢語句。
9、可選的,所述將所述交集操作改寫為不包括去重操作的半連接操作,得到所述第二查詢語句,包括:將所述交集操作的第一個分支的目標列作為條件,與所述交集操作的其余分支的目標列構造第二等值連接條件;根據所述第二等值連接條件,得到所述半連接操作的子查詢,所述子查詢的目標列為默認值;將所述子查詢掛載在所述第一個分支的條件子句后,得到所述第二查詢語句。
10、可選的,所述目標操作為半連接操作或反連接操作,所述根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,包括:當所述過濾條件數量大于預設數量閾值、所述數據量小于預設數據量閾值時,確定改寫所述第一查詢語句。所述對所述第一查詢語句進行改寫,獲得第二查詢語句,包括:根據所述第一查詢語句的類型,將所述半連接操作或所述反連接操作改寫為等效的集合操作,獲得所述第二查詢語句,所述第一查詢語句的類型包括去重類型、不去重類型。
11、可選的,所述根據所述第一查詢語句的類型,將所述半連接操作或所述反連接操作改寫為等效的集合操作,獲得所述第二查詢語句,包括:根據所述半連接操作或所述反連接操作中與父查詢相關的等值條件,生成目標分支,所述目標分支的目標列為所述等值條件;根據所述半連接操作或所述反連接操作對應的子查詢,以及,所述目標分支,構造與所述半連接操作或所述反連接操作等效的集合操作;根據所述第一查詢語句的類型,調整所述集合操作的類型,以得到所述第二查詢語句。
12、本申請第二方面提供一種查詢語句轉換裝置,包括:獲取模塊,用于獲取數據庫的第一查詢語句;確定模塊,用于當所述第一查詢語句包括第一表和第二表的目標操作時,根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,所述目標操作包括集合操作、或半連接操作、或反連接操作;處理模塊,用于若確定改寫所述第一查詢語句,則對所述第一查詢語句進行改寫,獲得第二查詢語句,所述第二查詢語句的查詢效率高于所述第一查詢語句的查詢效率;執行模塊,用于執行所述第二查詢語句。
13、本申請第三方面提供一種查詢語句轉換設備,包括:存儲器和處理器;所述存儲器存儲計算機可執行指令;所述處理器執行所述存儲器存儲的計算機可執行指令,使所述數據查詢設備執行如本申請第一方面任一項所述的查詢語句轉換方法。
14、本申請第四方面提供一種計算機可讀存儲介質,存儲有計算機可執行指令,所述計算機可執行指令被執行時實現如本申請第一方面任一項所述的查詢語句轉換方法。
15、本申請第五方面提供一種計算機程序產品,包括計算機程序,所述計算機程序被執行時實現如本申請第一方面任一項所述的查詢語句轉換方法。
16、綜上,本申請提供的查詢語句轉換方法、裝置、設備及存儲介質,通過獲取數據庫的第一查詢語句,當所述第一查詢語句包括第一表和第二表的目標操作時,根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句。若確定需要改寫第一查詢語句,對所述第一查詢語句進行改寫,獲得查詢效率高于所述第一查詢語句的查詢效率的第二查詢語句,并執行第二查詢語句。從而提高了查詢語句的查詢效率。
1.一種查詢語句轉換方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述目標操作為集合操作,所述根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,包括:
3.根據權利要求2所述的方法,其特征在于,所述根據所述集合操作的類型,將所述第一查詢語句中的所述集合操作轉換為等效的半連接操作或反連接操作,獲得第二查詢語句,包括:
4.根據權利要求3所述的方法,其特征在于,所述將所述集合操作改寫為包括去重操作的半連接操作或反連接操作得到所述第二查詢語句,包括:
5.根據權利要求4所述的方法,其特征在于,所述將所述差集操作改寫為包括去重操作的反連接操作,得到所述第二查詢語句,包括:
6.根據權利要求2所述的方法,其特征在于,所述根據所述集合操作的類型,將所述第一查詢語句中的所述集合操作轉換為等效的半連接操作或反連接操作,獲得第二查詢語句,包括:
7.根據權利要求3-5中任一項所述的方法,其特征在于,所述將所述集合操作改寫為包括去重操作的半連接操作或反連接操作,得到所述第二查詢語句,包括:
8.根據權利要求6所述的方法,其特征在于,所述將所述交集操作改寫為不包括去重操作的半連接操作,得到所述第二查詢語句,包括:
9.根據權利要求1所述的方法,其特征在于,所述目標操作為半連接操作或反連接操作,所述根據所述第一查詢語句的過濾條件數量、數據量確定是否改寫所述第一查詢語句,包括:
10.根據權利要求9所述的方法,其特征在于,所述根據所述第一查詢語句的類型,將所述半連接操作或所述反連接操作改寫為等效的集合操作,獲得所述第二查詢語句,包括: