SQLServer效能優化之改寫SQL語句
效能優化之SQL語句改寫
有這樣一條SQL,在系統效能檢視中顯示執行時間30秒,單獨拿出來執行時間6秒
SELECT *
FROM TABLEA
WHERE COND1 AND (A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM TABLEB WHERE ...)
OR
A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM TABLEB WHERE ...)
)
ORDER BY 1
優化步驟
首先把COND1之前的語句拿出來執行約0秒
其次分別執行每個單獨的子查詢(NOT IN中的子查詢)語句也是0秒
再次把OR的語句分別執行,發現執行速度均是0秒
分析問題可能出現在兩個子查詢的合併上,乾脆直接把SQL語句改寫成兩個獨立的語句再進行UNION試試看,如下格式
SELECT * FROM
(
SELECT * FROM TABLEA WHERE COND1 AND A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM TABLEB WHERE ...)
UNION
SELECT * FROM TABLEA WHERE COND1 AND A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM TABLEB WHERE ...)
)A
ORDER BY 1
執行後0秒,OK!
有這樣一條SQL,在系統效能檢視中顯示執行時間30秒,單獨拿出來執行時間6秒
SELECT *
FROM TABLEA
WHERE COND1 AND (A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM TABLEB WHERE ...)
OR
A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM TABLEB WHERE ...)
)
ORDER BY 1
優化步驟
首先把COND1之前的語句拿出來執行約0秒
其次分別執行每個單獨的子查詢(NOT IN中的子查詢)語句也是0秒
再次把OR的語句分別執行,發現執行速度均是0秒
分析問題可能出現在兩個子查詢的合併上,乾脆直接把SQL語句改寫成兩個獨立的語句再進行UNION試試看,如下格式
SELECT * FROM
(
SELECT * FROM TABLEA WHERE COND1 AND A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM TABLEB WHERE ...)
UNION
SELECT * FROM TABLEA WHERE COND1 AND A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM TABLEB WHERE ...)
)A
ORDER BY 1
執行後0秒,OK!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-669724/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql語句效能優化SQL優化
- 資料庫效能優化之SQL語句優化資料庫優化SQL
- MySQL效能優化之簡單sql改寫MySql優化
- SQL Server優化之SQL語句優化SQLServer優化
- 優化SQL查詢:如何寫出高效能SQL語句優化SQL
- MySQL之SQL語句優化MySql優化
- Oracle之sql語句優化OracleSQL優化
- oracle效能問題:sql語句優化OracleSQL優化
- Oracle SQL語句優化之UNIONOracleSQL優化
- SQL改寫優化SQL優化
- SQL語句優化SQL優化
- 效能最佳化之SQL語句最佳化SQL
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MYSQL SQL語句優化MySql優化
- SQL語句的優化SQL優化
- 求助:SQL語句優化SQL優化
- SQL Server之資料庫語句優化SQLServer資料庫優化
- SQL Server 之資料庫語句優化SQLServer資料庫優化
- sql語句執行順序與效能優化(1)SQL優化
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- 效能優化查詢語句優化
- SQL SERVER全面優化:寫出好語句是習慣SQLServer優化
- SQLServer效能優化之查詢提示SQLServer優化
- SQL語句優化(轉載)SQL優化
- 常用SQL語句優化技巧SQL優化
- SQL 語句的優化方法SQL優化
- 如何寫出高效能SQL語句SQL
- SQL Server 2008 優化MERGE語句效能SQLServer優化
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- MySQL 效能優化之SQL優化MySql優化
- SQLServer效能優化之活用臨時表SQLServer優化
- sqlserver dba常用的sql語句SQLServer
- 優化 SQL 語句的步驟優化SQL
- 一個SQL語句的優化SQL優化
- SQL語句操作符優化SQL優化
- 關於sql語句的優化SQL優化
- SQL語句優化技術分析SQL優化