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優化
- MySQL效能優化之簡單sql改寫MySql優化
- MySQL之SQL語句優化MySql優化
- SQL語句優化SQL優化
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MYSQL SQL語句優化MySql優化
- sql語句執行順序與效能優化(1)SQL優化
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- [20201210]sql語句優化.txtSQL優化
- sqlserver dba常用的sql語句SQLServer
- 優化 SQL 語句的步驟優化SQL
- soar-PHP - SQL 語句優化器和重寫器的 PHP 擴充套件包、 方便框架中 SQL 語句調優PHPSQL優化套件框架
- [20200320]SQL語句優化的困惑.txtSQL優化
- sqlserver採集欄位的sql語句SQLServer
- [20181114]一條sql語句的優化.txtSQL優化
- SQL優化案例-單表分頁語句的優化(八)SQL優化
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- Sql語句本身的優化-定位慢查詢SQL優化
- [20200324]SQL語句優化的困惑2.txtSQL優化
- SQL語句優化的原則與方法QOSQL優化
- Android 效能優化(十二)之我為什麼寫效能優化Android優化
- sql語句抄寫作業SQL
- SQL語句最佳化SQL
- MySql常用30種SQL查詢語句優化方法MySql優化
- 神奇的 SQL 之效能優化 → 讓 SQL 飛起來SQL優化
- spark sql語句效能最佳化及執行計劃SparkSQL
- SQL語句規範的寫法SQL
- SQL效能優化技巧SQL優化
- 常用SQL語句1-增刪改查SQL
- [20211229]toad下優化sql語句注意的問題.txt優化SQL
- sql改寫優化:簡單規則重組實現SQL優化
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- MySQL——優化ORDER BY語句MySql優化
- SQL語句寫到累了?試試GreenDAOSQL
- 騰訊雲TDSQL PostgreSQL版 -最佳實踐 |優化 SQL 語句SQL優化