優化慢執行或慢查詢的方法

2021-07-13 21:02:16 字數 968 閱讀 1694

相當於就是之前乙個表資料量比較小,之後資料量大了查詢就變慢,此時在經常用到的字段上加個索引,效率會翻倍很多的

例如: where a * 5 = 10 可以 轉化為 where a = 10/5

這樣既可以保證業務邏輯也可以繼續使用原索引去操作,所以要避免對索引字段進行計算或型別轉化

如果業務邏輯允許,且表裡幾乎無髒資料,那就可以使用join去聯表查詢,而不建議使用left join或right join去查詢,因為本身它們聯表都是有區別的,建議使用join去聯表,盡量的去提公升速度

不建議 select * from table_name;
因為查詢,返回結果集,都會花費io,還有頻寬一些資源,所以結果集內容少速度也會提公升的

表示式索引,如經常對乙個字段進行 lower(字段***), 那就可以建立 表示式 lower(字段***) 的索引,只有操作可以使用到索引,速度必然會有所提公升

如: where a = 'f'

and b = '2'

就可以建立乙個 a = 『f』 and b = 『2』 的部分索引,因為業務經常會用到,自然會提公升速度

如一下操作的資料量比較大,不管是dml、ddl語言都得考慮lock的粒度,不能影響線上業務操作,一般都是分布執行,不要為了省事,而導致業務掛掉,那就得不償失了,操作前先檢視運算元據量的級別

索引的維護,把一些不用的且佔磁碟空間比較大,自然得刪除,或者跟據業務邏輯對某字段的索引演算法進行調整再或者使用新的索引去替代老的索引,注意處理同乙個欄位的兩個索引的優化時,如果存在主從複製的機制在的話,維護索引注意不要影響生產業務

注意:以上優化都是基於不改變原有業務需求所做的優化,否則另換它法去優化

b-tree、 hash、gist、sp-gist、gin、brin
要用那種索引,跟據業務邏輯的特點或者欄位的型別而定

pg的官方文件:

優化 慢查詢

查詢超過指定時間的語句叫慢查詢 檢視慢查詢的指定時間 show variables like long show status like connections 查詢當前mysql資料庫是否開啟了慢查詢日誌功能 show variables like slow 5.5版本配置 1 配置慢查詢日誌存放...

慢查詢優化

建索引的幾大原則 1.最左字首匹配原則,非常重要的原則,mysql會一直向右匹配直到遇到範圍查詢 between like 就停止匹配,比如a 1 and b 2 and c 3 and d 4 如果建立 a,b,c,d 順序的索引,d是用不到索引的,如果建立 a,b,d,c 的索引則都可以用到,a...

SQL慢查詢優化

3月19日,3月20日的18 00 20 00之間,db伺服器的cpu load飆公升 dba提出問題原因是sql where rest id and state and id and valid 掃瞄行數太多,執行時間過長 在b端心跳連線時,會傳 queue marker 引數,含義為上次處理的最...