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/
相關文章
- SQL語句優化SQL優化
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MYSQL SQL語句優化MySql優化
- sql語句執行順序與效能優化(1)SQL優化
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- MySQL之SQL語句優化MySql優化
- [20201210]sql語句優化.txtSQL優化
- 優化 SQL 語句的步驟優化SQL
- [20200320]SQL語句優化的困惑.txtSQL優化
- [20181114]一條sql語句的優化.txtSQL優化
- SQL優化案例-單表分頁語句的優化(八)SQL優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- Sql語句本身的優化-定位慢查詢SQL優化
- [20200324]SQL語句優化的困惑2.txtSQL優化
- SQL語句優化的原則與方法QOSQL優化
- SQL語句最佳化SQL
- MySql常用30種SQL查詢語句優化方法MySql優化
- spark sql語句效能最佳化及執行計劃SparkSQL
- SQL效能優化技巧SQL優化
- soar-PHP - SQL 語句優化器和重寫器的 PHP 擴充套件包、 方便框架中 SQL 語句調優PHPSQL優化套件框架
- [20211229]toad下優化sql語句注意的問題.txt優化SQL
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- MySQL——優化ORDER BY語句MySql優化
- 騰訊雲TDSQL PostgreSQL版 -最佳實踐 |優化 SQL 語句SQL優化
- SQL語句SQL
- [20210205]警惕toad下優化直方圖相關sql語句.txt優化直方圖SQL
- 效能調優——SQL最佳化SQL
- 【SQL】9 SQL INSERT INTO 語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- SQL SELECT 語句SQL
- sql常用語句SQL
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- 自制小工具大大加速MySQL SQL語句優化(附原始碼)MySql優化原始碼