SQL語句優化工具LECCO SQL Expert


簡單來說,SQL語句的優化就是將性能低下的SQL語句轉換成達到同樣目的的性能優異的SQL語句。人工智能自動SQL優化就是使用人工智能技術,自動對SQL語句進行重寫,找到性能最好的等效SQL語句。

  人工智能自動SQL 優化  隨着人工智能技術的發展和在數據庫優化領域應用的深入,在20世紀90年代末終於出現了突破性的進展——人工智能自動SQL優化。目前在商用數據庫領域LECCO TechnologyLimited(靈高公司)擁有該技術並提供使用該技術的自動優化產品——LECCO SQL Expert,其支持Oracle、Sybase、MS SQLServer和IBMDB2數據庫平台。該產品針對數據庫應用的開發和維護階段提供了幾個特別的模塊:SQL語法優化器、PL/SQL集成化開發調試環境(IDE)、掃描器、數據庫監視器等。圖1 人工智能自動SQL優化示意圖  其核心模塊之一“SQL語法優化器”的工作原理大致如下

  一條源SQL語句輸入→“人工智能反饋式搜索引擎”對輸入的SQL語句結合檢測到的數據庫結構和索引進行重寫,產生N條等效的SQL語句輸出→產生的N條等效SQL語句再送入“人工智能反饋式搜索引擎”進行重寫,直至無法產生新的輸出或搜索限額滿→對 輸出的SQL語句進行過濾,選出具有不同執行計划的SQL語句(即不同的執行效率)→對得到的SQL語句進行批量測試,找出性能最好的SQL語句。圖2 優化前的SQL語句  自動優化實例  假設我們從源代碼中抽取出這條SQL語句

  SELECTCOUNT(*)FROMEMPLOY-EE WHEREEXISTS(SELECT'X'FROM DEPARTMENTswheresEMP_DEPT=DPT_IDAND DPT_NAME LIKE'AC%')AND EMP_IDIN(SELECT SAL_EMP_IDFROM EMP_SAL_HISTB WHERESAL_SALARY>70000)

  按“優化”按鈕后,經過十幾秒,SQL Expert就完成了優化的過程,從優化細節中可以看到,它在十幾秒的時間內重寫產生了2267條等價的SQL語句,其中136條SQL語句有不同的執行計划

  接下來我們可以對自動重寫產生的136條具有不同執行計划的SQL語句進行批運行測試,以選出性能最佳的等效SQL語句。按下“批運行”按鈕,在“終止條件”頁選擇“最佳運行時間SQL語句”,按“確定”。圖4 測試條件  經過幾分鍾的測試運行后,我們可以發現SQL124的運行時間和反應時間最短。運行速度約有22.75倍的提升(源SQL語句運行時間為2.73秒,SQL124運行時間為0.12秒,

  我們把SQL124放入源代碼中,結束一條SQL語句的優化工作。從上例可以看到,LECCO SQL Expert的自動重寫技術使原來需要幾小時才能完成的SQL語句的優化工作,縮減到幾分鍾之內就可以完成。數據庫管理員和開發人員可以從繁重的SQL語句優化工作中解脫出來。

  邊做邊學式訓練

  LECCO SQL Expert不僅能夠找到最佳的SQL語句,而且提供的“邊做邊學式訓練”還能夠教會開發人員和數據庫管理員如何寫出性能最好的SQL語句。LECCO SQL Expert的“SQL比較器”可以標明源SQL和待選SQL之間的不同之處。LECCO SQL Expert詳盡的上下文敏感幫助系統可以指出執行計划的深層含義。圖6 源語句與SQL124的比較  以上面優化的結果為例,為了查看源SQL語句和SQL124在寫法上的不同,我們可以按下“比較器”按鈕,對SQL124和源SQL語句進行比較。如果選擇“雙向比較”復選框,“SQL比較器”可以將兩條互相間的不同之處以藍色表示。當然,你也可以從 源語句和重寫后的SQL語句中任選兩條進行比較

  從比較的結果可以看到,重寫得到的SQL124把第一個Exists改寫成了In;在字段DPT_ID上進行了合並空字符串的操作以誘導數據庫先執行子查詢中的(SELECTDPT_ID||'FROMDEPART-MENTWHEREDPT_NAMELIKE'AC%')在子查詢完成后再與EMPLOYEE表進行嵌套循環連接(NestedLoopJoin)。圖7 在線執行計划幫助  如果覺得對寫法的改變難以理解,還可以點中“執行計划”復選框,通過比較兩條SQL語句的執行計划的不同來了解為什么兩條SQL在性能上有差異。在查看執行計划過程中如果有什么不明白的地方,可以點中“SQL信息按鈕”,再在執行計划看不明白的地方點 擊下,LECCO SQL Expert的上下文敏感幫助系統將提供執行計划該處的解釋

  優化模塊的特點

  LECCO SQL Expert優化模塊的特點主要有以下幾點:

  1、自動優化SQL語句;

  2、以人工智能知識庫“反饋式搜索引擎”來重寫性能優異的SQL語句;

  3、找出所有等效的SQL語句及可能的執行計划;

  4、產生相同的結果;

  5、先進的SQL語法分析器能處理最復雜的SQL語句;

  6、可重寫SELECT、SELECTIN-TO、UPDATE、INSERT和DELETE語句;

  7、通過測試運行,為應用程序和數據庫自動找到性能最好的SQL語句;

  8、提供微秒級的計時;

  9、提供“邊做邊學式訓練”;

  10、提供上下文敏感的執行計划幫助系統和SQL運行狀態幫助;

  11、不是猜測或建議,而是SQL重寫解決方案。

  專家級的SQL 語句

  LECCO SQL Expert的出現使SQL的優化變得更加簡單。它不僅能在很短的時間內找到所有可能的優化方案,而且能夠通過實際測試確定最有效的優化方案。同以往的數據庫優化手段相比較,LECCO SQL Expert的出現可以說是將數據庫優化技術帶到了一個嶄新的技術高度。

工具下載

http://www.haicode.net/soft/UploadFile/2007-11/Registar_LECCO_SQL_Expert_For_SQL_Server_v25.rar
下載說明

LECCO SQL Expert for sql server,一款很好用的SQL語句優化工具
壓縮包里含有注冊機和漢化文件

軟件破解注冊及漢化說明
破解方法1:
1、安裝Demo目錄下的文件
2、把Crack目錄的全部文件覆蓋過去
3、用cr-sql25.exe生成注冊碼注冊

破解方法2:
第一次安裝時要求提供序列號可使用試用版的:
898724-355633-859461-053221
安裝好后再用所帶的工具cr-sql25生成注冊號來注冊就完全可以使用了

漢化文件使用方法:
安裝好LECCO SQL Expert for SQL Server后,把文件復制到安裝目錄即可





程序開發,特別是web開發,對性能的要求比較高,在線列表信息要快又要占用減少服務器資源,在大眾化的網絡中可以已較快的速度讀取數據,在程序方面優化,主要只書寫代碼質量,這里對代碼優化不進行討論,此篇主是針對數據庫查詢語句的優化.

編程開手或DBA通過自己的多年的經驗可能重寫性能低下的sql語句,但對於我這樣菜鳥來說,寫出高性能的sql有些困難.哎…,不用怕,我現在介紹個工具, LECCO SQL Expert,這個工具的下載及使用幫助讓大家baidu下,就有一大堆.這里不提供下載鏈接了.

好了,開始我們今天的話題:

1.打開軟件,登錄后,出現以下界面.




找到我要進行測試的sql語句,如下:

SELECT dbo.合同申請表.ID, 

    dbo.合同申請表.ApplyUser, 

    dbo.UserTable.UserName, 

    dbo.合同申請表.ApplyType, 

    dbo.合同申請表.Name, 

    dbo.合同申請表.Object, 

    dbo.合同申請表.Intention, 

    dbo.合同申請表.Delivery, 

    dbo.合同申請表.Howmuch, 

    dbo.合同申請表.Payment, 

    dbo.合同申請表.Transit, 

    dbo.合同申請表.Others, 

    dbo.合同申請表.Memo, 

    dbo.合同申請表.Status, 

    dbo.合同狀態表.title AS StatusTitle, 

    dbo.合同申請表.Attime, 

    dbo.UserTable.Phone, 

    dbo.合同申請表.Serial 

FROM dbo.合同申請表, 

    dbo.UserTable, 

    dbo.合同狀態表 

WHERE dbo.合同申請表.status = @nStatus 

  and dbo.合同申請表.ApplyType = @cType 

  and dbo.合同申請表.WorkerID = @nOfficer 

  AND dbo.合同申請表.Status = dbo.合同狀態表.id 

  AND dbo.合同申請表.ApplyUser = dbo.UserTable.ID



2.將其copy到LECCO SQL Expert 的sql編輯器中,如圖:




3.點擊工具欄的優化按鈕,輸入參數(sql語句用的是變量@nStatus, @cType, @nOfficer),如圖:







4.輸入相應的變量值,點擊確定,進行優化語句查詢:如圖:










找到5個可選的執行計划.,批運行這5個sql,看運行時間最短的,其是最好的優化sql

5.批運行,並顯示這5個運行時間







結果顯示:sql4是最優的,其語句為:

SELECT dbo.合同申請表.ID, 

    dbo.合同申請表.ApplyUser, 

    dbo.UserTable.UserName, 

    dbo.合同申請表.ApplyType, 

    dbo.合同申請表.Name, 

    dbo.合同申請表.Object, 

    dbo.合同申請表.Intention, 

    dbo.合同申請表.Delivery, 

    dbo.合同申請表.Howmuch, 

    dbo.合同申請表.Payment, 

    dbo.合同申請表.Transit, 

    dbo.合同申請表.Others, 

    dbo.合同申請表.Memo, 

    dbo.合同申請表.Status, 

    dbo.合同狀態表.title AS StatusTitle, 

    dbo.合同申請表.Attime, 

    dbo.UserTable.Phone, 

    dbo.合同申請表.Serial 

FROM dbo.合同申請表 

    INNER JOIN dbo.合同狀態表 

      ON dbo.合同申請表.Status = dbo.合同狀態表.id 

    INNER JOIN dbo.UserTable 

      ON dbo.合同申請表.ApplyUser = dbo.UserTable.ID 

WHERE dbo.合同申請表.status = @nStatus 

  and dbo.合同申請表.ApplyType = @cType 

  and dbo.合同申請表.WorkerID = @nOfficer 

OPTION (FORCE ORDER)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM