SQL 語句優化總結

2021-09-06 03:34:42 字數 1048 閱讀 5053

個人日常優化sql語句的總結筆記

目前 db 承受 日平均 500w pv 左右的站點,資料檔案大小在20g左右,表資料量 在 50 - 500 w 左右

僅供參考:

1  . 查詢的資料行分布情況,決定索引是否用得上,如果查詢的資料行在資料表中分布均勻,且所佔比重較大,能用上索引;反之,用不上索引

2  . select 的字段數目,特別是 長度較大的字段,對 語句的執行時間影響較大

3  . 語句中有 distinct 時,再在 where 語句中限制日期範圍的話,反而會影響效能,無 distinct 時,執**況是一樣的

4  . distinct 一般佔到總語句開銷的 65 %左右

5  . newid 則視結果集而定,結果集越大,newid 所佔語句的總開銷比例也就越大

6  . group by 歸總時,語句開銷和top 無關,所以,盡量少在大表中group by。

7  . group by 的字段越多,開銷越大,且這些欄位是用不上索引的,但是 where 中的條件是可以用上索引的。但是不可估量的是,用上索引也不一定能減少開銷

8  . 非聚集索引,在 order by 中是用不上的

9  . row_number 在io操作上不是十分的出色,但是在占用cpu資源上,卻做的非常好。總體上,還是相當不錯的,執行時間較短。

10. 在部分情況下,如果 or 用好,是和 in 的效率一樣的

11. 查詢條件過多也會影響效能,且較嚴重

12. 查詢中,username='ssssss' 的效能往往會比 userid=123456 的效能要好

13 . 當語句中出現 in(select id from table1) 時,in裡面的表示式一定要加top ,比如 select top 10 * from tables where id in(select top 100 id from table2),特別是在 in 裡面取出來的資料比較多,外表又很大的情況

14 . 聚集索引一定要建在在表中分布均勻的字段、增減規律的字段上,比如日期,而盡量避免將聚集索引建立在userid等字段上

不斷補充中 ......

sql 語句優化總結

我們如何更迅速的從乙個大型專案中,知道是什麼影響了服務的效能。mysql 提供了一些常用的命令來查詢資料庫的執行狀態。1.show status like uptime 檢視mysql資料庫執行了多長時間 2.show status like com select 檢視mysql 資料庫的查詢次數 ...

SQL語句優化總結

開發過程中必不可少的就是對資料庫的操作,也就離不開sql語句的書寫,我們也就需要考慮到sql語句的執行速度,需要書寫規範和優化。1.避免進行全表掃瞄。避免使用 select 用表中具體的列來查詢 select from user select id,name,phone,from user 2.避免...

sql語句優化總結

先前一直對sql語句優化沒有太在乎,最近 使用者量增加,發現資料庫壓力很大自己寫的語句啊,新來的架構師對我們語句一一優化,我總結如下 不斷更新。1 優化前的語句 query time 5.967435 lock time 0.000129 rows sent 1 rows examined 8034...