一、排版規范
1.代碼縮進
對於判斷、循環等處理使用字符縮進
縮進的空格最好不要使用TAB鍵
2.空格及換行
變量定義、相對獨立的程序塊等要單獨成行,便於閱讀
太長的程序(超過110列)應做換行處理
操作符前后加入空格
3.書定習慣
不同操作類型的操作符用括號隔離
表、字段別名用意義的名稱替代
所有書寫使用大寫,方面移植
二、命名規范
1.存儲過程
”SP_“作為前綴
2.函數
“F_”作為前綴
3.觸發器
“TR_”作為前綴
4.視圖
“V_”作為前綴
5.鏈接服務
“LNK_”作為前綴
6.主鍵
“PK_”作為前綴,表名在后,如:PK_表名
7.外鍵
“FK_”作為前綴,主表名,從表名,如:FK_主表_從表
8.索引
“ID_”作為前綴,列名在后,如:ID_COLNAME
9.序列
“SEQ_”作為前綴
三、通用SQL性能優化
1.索引使用
盡量使用“>=”或,不要使用“>”
LIKE盡量前端匹配
盡量不要使用“<>”
條件中不要使用函數
條件中不要使用計算
條件中盡量不要使用NOT
盡量避免使用OR
合理利用復合索引
2.SQL優化
避免使用復合SQL語句(如:SELECT A,B FROM TABLE1 WHERE A IN )(SELECT A1 FROM TABLE2))
盡量避免使用DISTINCT
盡量避免直接使用自定義函數
對於查詢比較復雜,數據量較大的查詢,可以使用工具進行查詢計划檢測,調整語句性能
不要在存儲過程或函數中反復訪問同一張表,如果需要,可以將數據放在臨時表中使用。
應盡量減少控制語句的檢查次數,以提高執行效率
如果能從一條SQL語句中獲取多個想要的數據,就不要分多條SQL語句分分次獲取
在長度和精度和精度允許的情況下,建議用INTERGE代替NUMERIC,在可以提高性能的情況下,使用EXISTS代替IN,NOT EXISTS 代替NOT IN
查詢的WHERE過濾原則,應使過濾記錄數最多的條件
多表連接查詢時,可以先按條件過濾在進行連接
select、insert子句的代碼中不允許出現“*”以代替查詢所有字段,必須用實際的字段名代替
提高GROUP BY的執行效率,在進行GROUP BY 之前將不需要條件過濾掉