SQL優化工具


SQL語句是對數據庫進行操作的惟一途徑,對數據庫系統的性能起着決定性的作用。對於同一條件下的SQL語句寫法有很多,其中一些寫法往往對性能又有很大影響。但是每個人掌握SQL語言的水平不同,如何才能保證寫出高性能的SQL呢?
針對這種情況,人工智能自動SQL優化工具應運而生。現在我就向大家介紹這樣一款工具:SQL Tuning for SQL Server。
1. SQL Tuning 簡介
SQL Turning 是Quest公司出品的Quest Central軟件中的一個工具。
Quest Central(圖1)是一款集成化、圖形化、跨平台的數據庫管理解決方案,可以同時管理 Oracle、DB2 和 SQL server 數據庫。它包含了如下的多個工具:
·數據庫管理(DBA)
·數據庫監控(Monitoring Pack)
·數據庫診斷 (Spotlight Diagnostics)
·數據庫分析 (Database Analysis)
·SQL優化 (SQL Tuning)
·空間管理 (Space Management)
·壓力測試 (Load Generator)
·數據生成 (Data Generator)
·PL/SQL 開發 (TOAD)
·專家建議 (Knowledge Expert)
今天,我們只介紹其中的SQL優化 (SQL Tuning for SQL Server) 的使用方法。

圖1  quest central界面
2. 使用SQL Tuning 優化SQL
下面我們用SQL Server自帶的Northwind數據庫為例,幫助大家了解如何使用SQL Tuning優化SQL。
(1)建立連接。
在Quest Central主界面上的“Database”樹上選擇“SQL Server”,然后在下方出現的“Tools”框中選擇“SQL Tuning”選項,打開“Lanch SQL Tuning for SQL Server Connections”對話框(圖2)。我們在這里建立數據庫服務器的連接,以后的分析工作都會在它上面完成。

圖2 “建立連接”對話框
雙擊“New Connection”圖標,在彈出窗口中輸入數據庫的信息,單擊“OK”,然后單擊“Connect”即可。
(2)分析原始SQL語句 。
在打開窗口的“Oriangal SQL”文本框內輸入需要分析的原始SQL語句,代碼如下:

 
        

/*查詢賣出價個不同的同一貨物名稱*/
select DISTINCT c.CompanyName,p.ProductName
from [Order Details] od1,[Order Details] od2 , Orders o1 , Orders o2,Customers c, Products p
where od1.UnitPrice<>od2.UnitPrice and od1.ProductID=od2.ProductID
and od1.OrderID=o1.OrderID
and od2.OrderID=o2.OrderID
and o1.CustomerID=o2.CustomerID
and o1.CustomerID=C.CustomerID

 
        

首先在界面左上方選擇數據庫,然后點擊工具欄上的“Execute”按鈕,執行原始的SQL語句,SQL Tuning會自動分析SQL的執行計划,並把分析結果顯示到界面上(圖3)。

圖3 分析原始SQL語句
(3)優化SQL。
現在我們點擊工具欄上的“Optimize Statement”按鈕,讓SQL Tuning開始優化SQL,完成后,可以看到SQL Tuning產生了34條與原始SQL等價的優化方案(圖4)。

圖4 SQL優化方案

(4)獲得最優SQL。
接下來,我們來執行上面產生的優化方案,以選出性能最佳的等效SQL語句。在列表中選擇需要執行的優化方案(默認已全部選中),然后點擊工具欄上的“Execute”按鈕旁邊的下拉菜單,選擇“Execute Selected”。等到所有SQL運行完成后,點擊界面左方的“Tuning Resolution”按鈕,可以看到最優的SQL已經出來啦,運行時間竟然可以提高52%!(圖5)

圖5 “Tuning Resolution”界面
(5)學習書寫專家級的SQL語句 。
通過上面的步驟,我們已經可以實現自動優化SQL語句,但更重要的是,我們還可以學習如何書寫這樣高性能的SQL語句。點擊界面左方的“Compare Scenarios”按鈕,我們可以比較優化方案和原始SQL中的任意2條SQL語句,SQL Tuning會將它們之間的不同之處以不同顏色表示出來,還可以在下方的“執行計划”中,通過比較兩條SQL語句的執行計划的不同,來了解其中的差異(圖6)。

圖6 “Compare Scenarios”界面
3.小結
SQL Tuning等人工智能自動SQL優化工具的出現,為我們節省出大量的時間和精力。借助這些工具的幫助,書寫專家級的SQL語句將不再是難事。


免責聲明!

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



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