sql語句最佳化工具LECCO SQL Expert

來源:互聯網
上載者:User

軟體說明:
更優更快 人工智慧自動SQL最佳化----------http://www.sina.com.cn 2001/12/12 17:48 中國電腦教育報文/SQL愛好者  所謂SQL,就是指Structured Query Language(結構化查詢語言 (SQL)),它是目前使用最廣泛的資料庫語言,用來和資料庫打交道,從資料庫中得到使用者需要的資料。但是要想熟練使用SQL語句,也不是一件簡單的事,有些語句使用起來也比較麻煩。如果我們對SQL語句進行最佳化,那麼使用者使用起來 就會方便許多。  

       簡單來說,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上進行了合并Null 字元串的操作以誘導資料庫先執行子查詢中的(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)

 

登入開啟這個軟體出現一個使用者登入 SQL Server: 選擇你的當前伺服器串連方式選擇第二個:Native 登入名稱和密碼也就是你資料庫的角色了比如登入名稱是sa 密碼是12345

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.