軟體說明:
更優更快 人工智慧自動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