亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種對查詢sql請求進行優(yōu)化的方法及裝置的制作方法

文檔序號:6574517閱讀:320來源:國知局
專利名稱:一種對查詢sql請求進行優(yōu)化的方法及裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據(jù)庫應用領域,特別是涉及對查詢SQL請求進行優(yōu)化領域。
背景技術
在大型的軟件應用系統(tǒng)中,經常需要把程序和數(shù)據(jù)庫結合起來進行使用,在應用系統(tǒng)中,涉及到的數(shù)據(jù)量特別大,對于中大型應用,數(shù)據(jù)庫記錄數(shù)在百萬數(shù)量級以上,數(shù)據(jù)庫系統(tǒng)需要同時處理來自多個客戶端的SQL(StructuredQuery Language,結構化查詢語言)請求,數(shù)據(jù)庫系統(tǒng)的處理速度成為系統(tǒng)運行速度的瓶頸。對于質量不高的SELECT SQL請求(查詢SQL語句),其中可能包含有冗余的列、數(shù)據(jù)庫表連接和過濾條件等,這些都會影響數(shù)據(jù)庫系統(tǒng)的性能、增加數(shù)據(jù)庫鎖和數(shù)據(jù)庫資源的消耗,并影響SELECT SQL的并發(fā)執(zhí)行,進而影響整個應用系統(tǒng)的正常運行;對于數(shù)據(jù)庫系統(tǒng)本身的數(shù)據(jù)庫表的優(yōu)化一般在庫表設計過程中完成,例如,合理的設計表的結構、增加鍵和索引等。于是,如何優(yōu)化應用系統(tǒng)發(fā)送給數(shù)據(jù)庫系統(tǒng)的SELECT SQL語句,以達到使其最快的執(zhí)行、占用最少的數(shù)據(jù)庫資源成為軟件開發(fā)過程中要解決的問題。在現(xiàn)有技術中,一般通過下面兩種方法來解決這個問題1、將應用程序發(fā)送給數(shù)據(jù)庫系統(tǒng)的SELECT SQL代碼做靜態(tài)分析,采用人工方式提高SELECT SQL質量,減少其中表連接、多余列名和冗余的過濾條件。由于一個應用系統(tǒng)往往有上千、甚至上萬條不同的SQL運行,這種方法的缺點是工作量極大,耗費大量人力資源,成本高,優(yōu)化效率低。
2、對于采用O-R Mapping Select SQL系統(tǒng)生成的SELECT SQL,由于SELECTSQL是動態(tài)生成的,不能進行靜態(tài)分析,可以由專業(yè)的數(shù)據(jù)庫優(yōu)化專家,逐個跟蹤分析優(yōu)化O-R Mapping Select SQL的執(zhí)行計劃。但這種方法的工作量也非常大,使用專家的成本高,優(yōu)化效率低。
可見,在現(xiàn)有的SELECT SQL優(yōu)化方法中,存在著優(yōu)化成本高和優(yōu)化效率低的問題。

發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種對查詢SQL請求進行優(yōu)化的方法及裝置,以解決現(xiàn)有技術存在的優(yōu)化成本高和優(yōu)化效率低的問題。
為了解決上述問題,根據(jù)本發(fā)明的一個實施例,公開了一種優(yōu)化方法,包括規(guī)范處理查詢SQL語句中的字段名及別名;去掉所述S查詢SQL語句中的冗余的關聯(lián)關系;將所述查詢SQL語句轉換為語法樹;將所述語法樹進行邏輯關系優(yōu)化;將優(yōu)化后的語法樹轉化為標準查詢SQL語句。
其中,所述去掉所述查詢SQL語句中的冗余的關聯(lián)關系,優(yōu)選的,可以是去除冗余的列、去除冗余的鏈接關系或者去除冗余的查詢條件。
優(yōu)選的,所述對語法樹進行優(yōu)化是優(yōu)化所述語法樹中的分組條件、HAVING關系、鏈接關系、SELECT關系或排序規(guī)則。
根據(jù)本發(fā)明的另一個實施例,公開了一種對查詢SQL請求進行優(yōu)化的裝置,包括,規(guī)范處理單元,用于規(guī)范處理查詢SQL語句中的字段名及別名;冗余處理單元,用于去掉所述查詢SQL語句L中的冗余的關聯(lián)關系;第一轉換單元單元,用于將所述查詢SQL語句轉換為語法樹;優(yōu)化處理單元,用于將所述語法樹進行邏輯關系優(yōu)化;第二轉換單元單元,用于將優(yōu)化后的語法樹轉化為標準查詢SQL語句。
其中,優(yōu)選的,所述冗余處理單元包括冗余列處理單元,用于去除冗余的列;或者,冗余鏈接關系處理單元,用于去除冗余的鏈接關系;或者,冗余查詢條件處理單元,用于去除冗余的查詢條件關系。
其中,優(yōu)選的,所述優(yōu)化處理單元包括分組條件優(yōu)化處理單元,或者,HAVING關系優(yōu)化處理單元,或者,鏈接關系優(yōu)化處理單元,或者,SELECT關系優(yōu)化處理單元,或者,排序規(guī)則優(yōu)化處理單元;所述分組條件優(yōu)化處理單元,用于優(yōu)化分組條件;所述HAVING關系優(yōu)化處理單元,用于優(yōu)化HAVING關系;所述鏈接關系優(yōu)化處理單元,用于優(yōu)化鏈接關系;所述SELECT關系優(yōu)化處理單元,用于優(yōu)化SELECT關系;所述排序規(guī)則優(yōu)化處理單元,用于優(yōu)化排序規(guī)則。
與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點1、本發(fā)明通過自動化的對SELECT SQL進行優(yōu)化處理,達到使其最快的執(zhí)行、占用最少的數(shù)據(jù)庫資源的效果,減少數(shù)據(jù)庫資源的消耗,從而提高整個查詢過程的效率。
2、本發(fā)明在優(yōu)化過程中能夠自動的進行冗余的關聯(lián)關系和語法樹的邏輯關系的優(yōu)化,提高了優(yōu)化的速度,優(yōu)化效率高。


圖1是本發(fā)明的方法實施例1流程圖;圖2是本發(fā)明的方法實施例2流程3a是本發(fā)明的方法實施例2語法樹;圖3b是本發(fā)明的方法實施例2關系代數(shù)語法樹;圖3c是本發(fā)明的方法實施例2優(yōu)化后的關系代數(shù)語法樹;圖4a是本發(fā)明的裝置實施例框圖;圖4b是本發(fā)明的裝置實施例的冗余處理單元框圖;圖4c是本發(fā)明的裝置實施例的優(yōu)化處理單元框圖。
具體實施例方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。
在關系型數(shù)據(jù)庫中,查詢是使用的比較多的功能,在現(xiàn)在的查詢語言中,用戶只需要提出“做什么”,而不需要告訴“怎么做”,而具體的查詢的實現(xiàn)都交于數(shù)據(jù)庫系統(tǒng)處理,節(jié)約了編程的時間,但也造成提交的查詢語句不夠優(yōu)化,存在著冗余的各種操作關系,以至于查詢執(zhí)行的效率低、占用數(shù)據(jù)庫的資源,影響整個應用系統(tǒng)的正常運行。
參見圖1,是本發(fā)明的方法實施例1流程圖,包括步驟101,規(guī)范處理SELECT SQL中的字段名及別名。
在實際有人工手寫或者由O-R Mapping系統(tǒng)生成的SELECT SQL中,經常存在著字段名和別名不規(guī)范的問題,影響查詢的優(yōu)化,所以要先規(guī)范處理好這些字段名和別名的表示方法。例如,將沒有標識表名的字段替換為“原始表名.原始字段名”或者“原始表別名.原始字段名”的形式,如,
SELECT name FROM t1″O″可以規(guī)范為SELECT ″O″.name FROM t1″O″。
所述規(guī)范處理過程通過實現(xiàn)預置的規(guī)范表實現(xiàn)即可,也可以通過預置一定的轉換數(shù)據(jù)操作而實現(xiàn)。例如,將所有的表名、列名統(tǒng)一轉換為大寫,預防不同數(shù)據(jù)庫帶來的大小寫敏感;對表名、列名自動加上轉義符,從而保證不會因為與數(shù)據(jù)庫關鍵字沖突導致SQL出錯。
步驟102,去掉所述SELECT SQL中的冗余的關聯(lián)關系。
常見的冗余的關系有SELECT SQL的多余的連接關系、多余的條件關系和多余的參加運算的列,這些冗余造成了無用的運算,耗費了數(shù)據(jù)庫系統(tǒng)的資源,降低的執(zhí)行效率,可以通過邏輯分析識別出這些冗余關系,并去除這些冗余關系。而邏輯分析的策略可以預置在用于優(yōu)化的程序代碼中。
步驟103,將所述SELECT SQL轉換為語法樹。
將所述SELECT SQL轉換為語法樹后,可以采用關系代數(shù)運算來表示其邏輯關系。
步驟104,將所述語法樹進行邏輯關系優(yōu)化。
根據(jù)查詢優(yōu)化準則和關系代數(shù)的等價變換原則對語法樹的邏輯關系進行優(yōu)化。由于本發(fā)明中涉及的一些SQL語句為本領域技術人員熟知的,并且翻譯為中文存在不準確的瑕疵,所以下面基本通過英文的形式加以介紹。
所述查詢優(yōu)化準則可以包括下面的優(yōu)化策略(1)選擇運算應盡可能先做。
在優(yōu)化策略中這是最重要、最基本的一條。它常常可使執(zhí)行時節(jié)約幾個數(shù)量級,因為選擇運算一般使計算的中間結果的數(shù)量大大變小,減少了后續(xù)運算的數(shù)據(jù)量。
(2)在執(zhí)行連接運算前對關系適當?shù)仡A處理。
預處理方法主要有兩種索引連接方法、排序合并(SORT-MERGE)連接方法。
所述索引連接方法是在連接屬性上建立索引,然后執(zhí)行連接。
所述排序合并連接方法是對關系排序,然后執(zhí)行連接。
(3)把投影運算和選擇運算同時進行。
如有若干投影和選擇運算,并且它們都對同一個關系操作,則可以在掃描此關系的同時完成所有的這些運算以避免重復掃描關系。
(4)把投影同其前或其后的雙目運算結合起來,沒有必要為了去掉某些字段而掃描一遍關系。
(5)把某些選擇同在它前面要執(zhí)行的笛卡爾積結合起來成為一個連接運算,特別是等值連接運算要比同樣關系上的笛卡爾積省很多時間。
(6)找出公共子表達式。
如果某個子表達式重復出現(xiàn),且結果不是很大的關系,并且從外存中讀人這個關系比計算該子表達式的時間少得多,則先計算一次公共子表達式并把結果寫人中間文件是合算的。當查詢的是視圖時,定義視圖的表達式就是公共子表達式的情況。
優(yōu)化策略中大部分都涉及到關系代數(shù)表達式的變換。關系代數(shù)表達式的優(yōu)化是查詢優(yōu)化的基本課題。研究關系代數(shù)表達式的優(yōu)化可以從研究關系表達式的等價變換規(guī)則開始。
兩個關系表達式E1和E2是等價的,可記為E1≡E2。
所述關系代數(shù)的等價變換原則可以包括(1)連接、笛卡爾積交換律。
設E1和E2是關系代數(shù)表達式,F(xiàn)是連接運算的條件,則有E1×E2≡E2×E1 (2)連接、笛卡爾積結合律。
設E1、E2、E3是關系代數(shù)表達式,F(xiàn)1和F2是連接運算的條件,則有(E1×E2)×E3≡(E1×E2)×E3
(3)投影的串接定律。
πA1,A2,...,An(πB1,B2,...,Bm(E))≡πA1,A2,...,An(E)這里E是關系代數(shù)表達式,Ai(i=1,2,...,n),Bj(j=1,2,..,m)是屬性名且{A1,A2,...,An}構成{B1,B2,...,Bm}的子集。
(4)選擇的串接定律。
σF1(σF2(E))≡σF1F2(E)這里E是關系代數(shù)表達式,F(xiàn)1和F2是選擇條件。
串接定律說明選擇條件可以合并,這樣掃描一遍就可以檢測全部條件。
(5)選擇與投影的交換律。
σF(πA1,A2,...,An(E))≡πA1,A2,...,An(σF(E))如果選擇條件F只涉及屬性A1,A2,...,An。若F中有不屬于A1,A2,...,An的屬性B1,B2,...,Bn,則有πA1,A2,...,An(σF(E))≡πA1,A2,...,An(σF(πA1,A2,...,An,B1,B2,...,Bm(E))(6)選擇與笛卡爾積的交換律。
如果F中涉及的屬性都是E1中的屬性,則有σF(E1×E2)≡σF(E1)×E2如果F=F1F2,并且F1只涉及E1中的屬性,F(xiàn)2只涉及E2中的屬性,則可推出σF(E1×E2)≡σF1(E1)×σF2(E2)若F1只涉及E1中的屬性,F(xiàn)2只涉及E1和E2兩者的屬性,仍有σF(E1×E2)≡σF2(σF1(E1)×E2)使得部分選擇在笛卡爾積前先做。
(7)、選擇與并的交換。
設E=E1∪E2,E1,E2有相同的屬性名,則有σF(E1∪E2)≡σF(E1)∪σF(E2)(8)選擇與差運算的交換。
若E1,E2有相同的屬性名,則有σF(E1-E2)≡σF(E1)-σF(E2)(9)、投影與笛卡爾積的交換。
設E1,E2是兩個關系表達式,A1,A2,...,An是E1的屬性,B1,B2,...,Bn是E2的屬性,則有πA1,A3,...,An,B1,B3,...,Bm(E1×E2)≡πA1,A3,...,An(E1)×πB1,B2,...,Bm(E2)(10)投影與并交的交換。
若E1,E2有相同的屬性名,則有πA1,A2,...,An,B1,B2,...,Bm(E1∪E2)≡πA1,A3,...,An(E1)∪πA1,A3,...,An(E2)步驟105,將優(yōu)化后的語法樹轉化為標準SELECT SQL。
經過此步驟生成的SELECT SQL是優(yōu)化后的查詢語句。
優(yōu)選的,所述去掉所述SELECT SQL中的冗余的關聯(lián)關系是去除冗余的列、去除冗余的JOIN關系(鏈接關系)或者去除冗余的WHERE關系(查詢條件)。舉例如下。
優(yōu)化例1。
原SQLSELECT″A″.nameFROMt1 AS″A″LEFT JOIN t2″B″ON″A″.id=″B″.idLEFT JOIN t3″C″
ON ″A″.id=″C″.idJOIN的關聯(lián)A.id->B.idA.id->C.id因為SELECT中只用到了表A的name字段,也就是說B.id以及C.id的關聯(lián)是多余的。
所以可以優(yōu)化為SELECT″A″.Name FROM T1″A″優(yōu)化例2。
原SQLSELECT a.dataFROM aLEFT OUTER JOIN bON a.fid=b.fidWHERE b.fid=0AND c.fnum=0JOIN的關聯(lián)id->B.idWHERE條件b.fid=0c.fnum=0因為過濾條件已經對b.fid有限制,所以JOIN中關聯(lián)是多余的。優(yōu)化為SELECT a.data FROM a WHERE(a.fid=0 AND c.fnum=0)優(yōu)化例3。
SELECT″O″.name″NUM″FROM t1″O″LEFT OUTER JOIN t2″B″ON″A″.id=″B″.idLEFT JOIN t3″C″
ON″B″.id=″C″.idWHERE ″C″.num=123分析如下,關聯(lián)條件A.id->B.idB.id->C.id過濾條件為C.num查詢列為O.name根據(jù)關聯(lián)關系可以得出B表冗余,即關聯(lián)關系替換為A.id->C.id。由于C.num為過濾條件,所以不能去掉C的關聯(lián)。
優(yōu)化結果為SELECT″O″.name″NUM″FROM t1″O″LEFT OUTER JOIN t3″C″ON″A″.id=″C″.idWHERE″C″.num=123如果優(yōu)化例3的SQL變?yōu)镾ELECT″O″.name″NUM″FROM t1″O″LEFT OUTER JOIN t2″B″ON″A″.id=″B″.idLEFT JOIN t3″C″ON″B″.id=″C″.id那么優(yōu)化結果為SELECT″O″.name″NUM″FROM t1″O″優(yōu)選的,所述對語法樹進行優(yōu)化是優(yōu)化所述語法樹中的GROUP BY關系(分組條件)、HAVING關系、JOIN關系(鏈接關系)、SELECT關系或ORDER BY關系(排序規(guī)則)。
可以根據(jù)查詢優(yōu)化準則和關系代數(shù)的等價變換原則對語法樹的邏輯關系進行優(yōu)化,其優(yōu)化的對象可以是GROUP BY關系、HAVING關系、JOIN關系、SELECT關系或ORDER BY關系。所述的優(yōu)化規(guī)則可以預置在用于優(yōu)化的查詢模塊中。
參照圖2,是本發(fā)明的方法實施例2流程圖,本實施例以一個具體的SELECTSQL為例,進一步說明優(yōu)化過程,本實施例的數(shù)據(jù)庫中包含兩個表,學生表Student和學生選課表SC,Student包含學生姓名Sname和學生編號Sno字段,SC包含學生編號Sno和課程編號Cno字段,假定Student中有1000個學生記錄,SC中有10000個選課記錄,其中選修2號課程的選課記錄為50個。
求選修了2號課程的學生姓名。原始SELECT SQL為SELECT SnameFROM Student,SC“S”JOIN Student ON Student.Sno=SC.SnoWHERE Student.Sno=SC.Sno AND SC.Cno=′2′步驟201,規(guī)范處理字段名及別名。
由原始SELECT SQL可見,“SELECT Sname”中的“Sname”不規(guī)范,缺少表名,應該寫為“Student.Sname”;別名“S”其實并沒有用到,可以去掉。
經過規(guī)范處理后的SELECT SQL為SELECT Student.SnameFROM Student.SCJOIN Student ON Student.Sno=SC.SnoWHERE Student.Sno=SC.Sno AND SC.Cno=′2′步驟202,去掉所述SELECT SQL中的冗余的JOIN關系。
在上述SELECT SQL中的“JOIN Student ON Student.Sno=SC.Sno”和“WHEREStudent.Sno=SC.Sno AND SC.Cno=′2′”中的條件“Student.Sno=SC.Sno”重復,可以去掉“JOIN Student ON Student.Sno=SC.Sno”。得到SELECT Student.SnameFROM Student,SCWHERE Student.Sno=SC.Sno AND SC.Cno=′2′步驟203,轉換為語法樹。
按照邏輯規(guī)則將上面步驟中SELECT SQL轉換為語法樹,參見圖3a,是轉換后的語法樹,具體包括,把Student表和SC表以Student.Sno=SC.Sno做連接,在結果中選擇出符合條件SC.Cno=′2′的學生的姓名Student.Sname。
步驟204,轉換為關系代數(shù)語法樹。
按照關系代數(shù)的邏輯關系將上面步驟中的語法樹轉換為關系代數(shù)語法樹,參見圖3b,是轉換后的關系代數(shù)語法樹,具體包括,把S tudent和SC以Student.Sno=SC.Sno做笛卡爾積,在結果中選擇出符合條件SC.Cno=′2′的記錄的Student.Sname屬性值。
步驟205,進行優(yōu)化。
根據(jù)查詢優(yōu)化準則和關系代數(shù)的等價變換原則對關系代數(shù)語法樹的邏輯關系進行優(yōu)化,把關系代數(shù)語法樹轉換成優(yōu)化的形式。把選擇σSC.Cno=′2′移到葉端,參見3c,是優(yōu)化后的關系代數(shù)語法樹,具體包括,以SC.Cno=′2′為條件,選擇出SC中的記錄,把結果以Student.Sno=SC.Sno條件和Student做笛卡爾積,選擇其中的Student.Sname屬性值。
步驟206,將優(yōu)化后的語法樹轉化為標準SELECT SQL。得到優(yōu)化后的SELECT SQL為SELECT Student.SnameFROM Student,SELECT SC.Sno FROM SC WHERE SC.Cno=′2′WHERE Student.Sno=SC.Sno本實施例中,通過優(yōu)化JOIN關系,得到優(yōu)化后的SELECT SQL,對于GROUPBY關系、HAVING關系、SELECT關系或ORDER BY關系的優(yōu)化和此類似,作為本領域技術人員容易理解,在此不作贅述。
參見圖4a,是本發(fā)明的裝置實施例1框圖,包括規(guī)范處理單元401,用于規(guī)范處理SELECT SQL中的字段名及別名;冗余處理單元402,用于去掉所述SELECT SQL中的冗余的關聯(lián)關系;第一轉換單元單元403,用于將所述SELECT SQL轉換為語法樹;優(yōu)化處理單元404,用于將所述語法樹進行邏輯關系優(yōu)化;第二轉換單元單元405,用于將優(yōu)化后的語法樹轉化為標準SELECT SQL。
優(yōu)選的,參見圖4b,是本發(fā)明的裝置實施例的冗余處理單元402框圖,包括冗余列處理單元4011,用于去除冗余的列;或者,冗余JOIN關系處理單元4012,用于去除冗余的JOIN關系;或者,冗余WHERE關系處理單元4013,用于去除冗余的WHERE關系。
優(yōu)選的,參見圖4c,是本發(fā)明的裝置實施例的優(yōu)化處理單元404框圖,包括GROUP BY關系優(yōu)化處理單元4041,或者,HAVIN關系優(yōu)化處理單元4042,或者,JOIN關系優(yōu)化處理單元4043,或者,SELECT關系優(yōu)化處理單元4044,或者,ORDER BY關系優(yōu)化處理單元4045;所述GROUP BY關系優(yōu)化處理單元4041,用于優(yōu)化GROUP BY關系;所述HAVIN關系優(yōu)化處理單元4042,用于優(yōu)化HAVING關系;所述JOIN關系優(yōu)化處理單元4043,用于優(yōu)化JOIN關系;所述SELECT關系優(yōu)化處理單元4044,用于優(yōu)化SELECT關系;所述ORDER BY關系優(yōu)化處理單元4045,用于優(yōu)化ORDERBY關系。
以上對本發(fā)明所提供的一種對查詢SQL請求進行優(yōu)化的方法及裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
權利要求
1.一種對查詢SQL請求進行優(yōu)化的方法,其特征在于,包括,規(guī)范處理查詢SQL語句中的字段名及別名;去掉所述S查詢SQL語句中的冗余的關聯(lián)關系;將所述查詢SQL語句轉換為語法樹;將所述語法樹進行邏輯關系優(yōu)化;將優(yōu)化后的語法樹轉化為標準查詢SQL語句。
2.根據(jù)權利要求1所述的方法,其特征在于,所述去掉所述查詢SQL語句中的冗余的關聯(lián)關系是去除冗余的列、去除冗余的鏈接關系或者去除冗余的查詢條件。
3.根據(jù)權利要求1或2所述的方法,其特征在于,所述對語法樹進行優(yōu)化是優(yōu)化所述語法樹中的分組條件、HAVING關系、鏈接關系、SELECT關系或排序規(guī)則。
4.一種對查詢SQL請求進行優(yōu)化的裝置,其特征在于,包括,規(guī)范處理單元,用于規(guī)范處理查詢SQL語句中的字段名及別名;冗余處理單元,用于去掉所述查詢SQL語句L中的冗余的關聯(lián)關系;第一轉換單元單元,用于將所述查詢SQL語句轉換為語法樹;優(yōu)化處理單元,用于將所述語法樹進行邏輯關系優(yōu)化;第二轉換單元單元,用于將優(yōu)化后的語法樹轉化為標準查詢SQL語句。
5.根據(jù)權利要求4所述的方法,其特征在于,所述冗余處理單元包括冗余列處理單元,用于去除冗余的列;或者,冗余鏈接關系處理單元,用于去除冗余的鏈接關系;或者,冗余查詢條件處理單元,用于去除冗余的查詢條件關系。
6.根據(jù)權利要求4或5所述的方法,其特征在于,所述優(yōu)化處理單元包括分組條件優(yōu)化處理單元,或者,HAVING關系優(yōu)化處理單元,或者,鏈接關系優(yōu)化處理單元,或者,SELECT關系優(yōu)化處理單元,或者,排序規(guī)則優(yōu)化處理單元;所述分組條件優(yōu)化處理單元,用于優(yōu)化分組條件;所述HAVING關系優(yōu)化處理單元,用于優(yōu)化HAVING關系;所述鏈接關系優(yōu)化處理單元,用于優(yōu)化鏈接關系;所述SELECT關系優(yōu)化處理單元,用于優(yōu)化SELECT關系;所述排序規(guī)則優(yōu)化處理單元,用于優(yōu)化排序規(guī)則。
全文摘要
本發(fā)明公開了一種對查詢SQL請求進行優(yōu)化的方法和裝置,其中所述方法包括規(guī)范處理查詢SQL語句中的字段名及別名;去掉所述S查詢SQL語句中的冗余的關聯(lián)關系;將所述查詢SQL語句轉換為語法樹;將所述語法樹進行邏輯關系優(yōu)化;將優(yōu)化后的語法樹轉化為標準查詢SQL語句。本發(fā)明通過自動化的對SELECT SQL進行優(yōu)化處理,達到使其最快的執(zhí)行、占用最少的數(shù)據(jù)庫資源的效果,減少數(shù)據(jù)庫資源的消耗,從而提高整個查詢過程的效率。
文檔編號G06F17/30GK101021874SQ20071008722
公開日2007年8月22日 申請日期2007年3月21日 優(yōu)先權日2007年3月21日
發(fā)明者修斯研 申請人:金蝶軟件(中國)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1