1. 盡量使用preparestatement,利用預處理功能。
2. 在進行多條記錄的增加、修改、刪除時,建議使用批處理功能,批處理的次數以整個sql語句不超過相應資料庫的sql語句大小的限制為準。
3. 建議每條sql 語句中in中的元素個數在500以下,如果個數超過時,應拆分為多條sql語句。禁止使用xx in(『』,』』….) or xx in(『』,』』,』』)。★
4. 禁止使用or 超過 500,如 xx =』123』 or xx=』456』。 ★
5. 盡量不使用外連線。
6. 禁止使用not in 語句,建議用not exist。★
7. 禁止使用union, 如果有業務需要,請拆分為兩個查詢。★
8. 禁止在一條sql語句中使用3層以上的巢狀查詢,如果有,請考慮使用臨時表或中間結果集。★
9. 盡量避免在一條sql語句中從》= 4個表中同時取數,對於僅是作為過濾條件關聯,但不涉及取數的表,不參與表個數計算;如果必須關聯4個或4個以上表,盡量採用子查詢的方式。
10.盡量避免使用order by和group by排序操作,因為大量的排序操作影響系統效能。如必須使用排序操作,盡量建立在有索引的列上。
11.對索引列的比較,盡量避免使用not 或 !=,可以考慮拆分為幾個條件。如col1 是索引列,條件col1 !=0 可以拆分為col1 >0 or col2 <0
12.任何對列的操作都將導致表掃瞄,所以應盡量將資料庫函式、計算表示式寫在邏輯操作符右邊。
13.在對char型別比較時,建議不要使用rtrim()函式,應該在程式中將不足的長度補齊。
14.用多表連線代替exists子句。
15.如果有多表連線時,應該有主從之分,並盡量從乙個表取數, 如select a.col1, a.col2 from a join b on a.col3=b.col4 where b.col5 = 『a』。
16.在where子句中,如果有多個過濾條件,應將索引列或過濾記錄數最多的條件應該放在前面。
17.在使用like時,建議like 的一邊是字串,表列在一邊出現。
效能優化 SQL優化
1.列型別盡量定義成數值型別,且長度盡可能短,如主鍵和外來鍵,型別字段等等 2.建立單列索引 3.根據需要建立多列聯合索引 當單個列過濾之後還有很多資料,那麼索引的效率將會比較低,即列的區分度較低,那麼如果在多個列上建立索引,那麼多個列的區分度就大多了,將會有顯著的效率提高。4.根據業務場景建立覆蓋...
SQL效能優化
postgre資料表資料比較多的情況下,使用模糊查詢效能很差,但是使用函式反而快了,返回資料一致,有點不解 warning表2688133條資料,warning message表6954788條資料 這個sql執行老半天都沒反映,耗時169904 ms select count 1 from war...
sql效能優化
任何平台的sql開發者都有自身的困惑,似乎他們一直糾纏在do while迴圈裡,這個迴圈讓他們不斷地重複同樣的錯誤。這是因為資料庫的發展依然不夠成熟。當然,商們也在不斷進步,但是他們還是需要處理更嚴重的問題。併發性,資源管理,空間管理和速度依然制約著sql開發者對開發平台的選擇。我並不期望sql開發...