sql語句效能優化
sql語句效能優化
1.儘量避免全域性掃描
全域性掃描會出降低查詢效率,嚴重的情況會造成死鎖,比如錯誤提示犧牲了一個程式。會造成全域性掃描的查詢語句有:
(1)未使用索引欄位查詢;
(2)在欄位上使用函式、算數運算,儘量將運算放到等號右側;
如 select * from testtable where len(A)=2
(3)左側模糊查詢會導致全表掃描,可以使用右側模糊查詢;
如select * from testtable where A like’%a%’
(4)使用 in or <>進行查詢;
可用用exists代替in,用union代替or
(5)使用空判斷語句;
如select * from testtable where A is null
2.儘量使用索引查詢
使用索引時,將帶有索引的欄位放在條件最前面,如果是聯合索引,按照索引欄位的順序寫。
如表TestTable上有兩個索引,欄位A+欄位B是一個聯合索引,欄位C無索引,則:
select * from testtable where A=’a’ and B=’b’ and C=’c’是可以使用到索引的;
select * from testtable where C=’c’ and A=’a’ and B=’b’ 也是可以使用到索引的,但效率不如上面一條高;
select * from testtable where B=’b’ and A=’a’ and C=’c’ 無法使用索引,效率最低;
3.使用繫結變數
sql語句提交到資料庫時會先生成執行計劃,使用頻度最高的若干條查詢語句會儲存在資料庫執行計劃中,減少下次執行時的解析時間。使用繫結變數的語句雖然引數不同但資料庫會認為是同一條語句,反之發果將引數寫在sql語句中,則每次都會認為是不同的語句。同理,sql語句的編寫儘量規範大小寫,大寫和小寫會認為是兩條不同的語句。
(1)繫結變數的sql寫法:
select * from testtable where username=:p0
使用時username傳入A和B會使用相同的執行計劃
(2)直接傳入引數的寫法:
select * from testtable where username=’A’
select * from testtable where username=’B’
使用時每條sql語句都會生成自己的執行計劃,無法做到執行計劃的複用
(3)大小寫不同無法複用執行計劃
select * from testtable where username=’A’
select * from TestTable where username=’B’
使用時每條sql語句都會生成自己的執行計劃
4.按事物提交
如果一次操作要執行多個sql語句,可以寫在資料庫事物中,事物的優勢是可以多次執行,一次提交,如果有一條執行失敗,可以整體回滾。另外,sql語句的執行時間是很短的,但是提交資料庫寫入磁碟是耗時的,整體提交可以減小寫入磁碟的時間,但不是一次提交的語句越多越好,因為資料庫是分頁寫入的,超過一頁的大小不會再帶來效能的提高,反而提高了資料丟失的風險,所以實際操作時要測試出一個合理的批量提交數。
5.其它
(1)合理建立索引,索引建立在經常使用的欄位上,減少不必要的索引;
(2)合理設計資料庫,如果表資料太多,可以考慮分庫分表;
(3)只查詢需要的欄位,避免select *;
(4)若只含數值資訊的欄位儘量不要設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷。
(5)儘可能的使用 varchar/nvarchar 代替 char/nchar ,因為首先變長欄位儲存空間小,可以節省儲存空間。
chart.js/
相關文章
- oracle效能問題:sql語句優化OracleSQL優化
- 資料庫效能優化之SQL語句優化資料庫優化SQL
- SQLServer效能優化之改寫SQL語句SQLServer優化
- SQL語句優化SQL優化
- SQL Server優化之SQL語句優化SQLServer優化
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MYSQL SQL語句優化MySql優化
- SQL語句的優化SQL優化
- 求助:SQL語句優化SQL優化
- sql語句執行順序與效能優化(1)SQL優化
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- 優化SQL查詢:如何寫出高效能SQL語句優化SQL
- 效能優化查詢語句優化
- MySQL之SQL語句優化MySql優化
- SQL語句優化(轉載)SQL優化
- 常用SQL語句優化技巧SQL優化
- Oracle之sql語句優化OracleSQL優化
- SQL 語句的優化方法SQL優化
- SQL Server 2008 優化MERGE語句效能SQLServer優化
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- 優化 SQL 語句的步驟優化SQL
- 一個SQL語句的優化SQL優化
- Oracle SQL語句優化之UNIONOracleSQL優化
- SQL語句操作符優化SQL優化
- 關於sql語句的優化SQL優化
- SQL語句優化技術分析SQL優化
- SQL語句優化方法30例SQL優化
- 一條sql語句的優化SQL優化
- sql語句的優化案例分析SQL優化
- 淺談mysql配置優化和sql語句優化MySql優化
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- 效能最佳化之SQL語句最佳化SQL
- 對sql語句的優化問題SQL優化
- SQL語句優化方法30例(轉)SQL優化
- SQL語句優化--十條經驗SQL優化
- 優化SQL 語句 in 和not in 的替代方案優化SQL
- ORACLE SQL語句優化技術分析OracleSQL優化
- 通過SQL PROFILE自動優化SQL語句SQL優化