pg資料庫sql優化總結

2021-08-21 21:23:53 字數 480 閱讀 1369

pg資料庫用近1年多,操作的資料量也越來越大,生產上也多次出現慢查詢現象,系統在高峰時間cpu使用率衝高達到100%,經分析罪魁禍首就是慢查詢了。

第一、排查,分析索引

因業務量的增大,很多單錶的記錄數已經超1,2千萬,對於查詢而言,沒有索引將會是災難,不僅cpu的壓力很大,應用預設的資料庫連線池也受到很大的挑戰,可能出現資料庫連線超時的現象。分析索引,explain/explain analyze 定位索引的執**況,大表必須避免全表掃瞄的情況。

第二、避免索引失效

避免 使用 <> 、not in 、not exist、!=b. like "%_" 百分號在前(可採用在建立索引時用reverse(columnname)這種方法處理),列名的函式計算,隱式轉換等。

第三、對於引用相同子集的查詢,可使用臨時表方案。

第四、對於大表足夠大,要考慮分割槽表,列分割槽,還是雜湊分割槽。

第五、從業務角度優化對資料庫的操作,如批量插入,避免併發操作。

pg資料庫常用sql

pgsql常用命令 連線資料庫,預設的使用者和資料庫是postgres 1 psql u user d dbname 切換資料庫,相當於mysql的use dbname c dbname 列舉資料庫,相當於mysql的show databases l 列舉表,相當於mysql的show tables...

資料庫SQL優化大總結

1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 最好不要給...

資料庫SQL優化大總結

1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 最好不要給...