一、書寫規範
1、sql編寫時,大小寫一致
2、關鍵字單佔一行,如select、from、where、and、group by、order by等
3、注意行縮排和對齊,建議語句中的關鍵字右對齊
4、使用空格,sql語句內的算術運算子、邏輯運算子(and、or、not)、 比較運算子(=、<=、>=、>、<、<>、between and)、in、like等運算子前後都應加一空格。
5、對較為複雜的sql語句加上注釋,說明演算法、功能。
注釋風格:注釋單獨成行、放在語句前面。
單行注釋:--
多行注釋:/* */
6、多表連線時,使用表的別名來引用列。
7、select後面的每一列(列數目大於1)單獨佔一行,where後面的每個條件(條件數大於1)單獨佔一行。
8、update set子句內容每一項單獨佔一行,無縮排。
9、insert子句內容每個表字段單獨佔一行,無縮排;values每一項單獨佔一行,無縮排 。
二、書寫優化效能建議
1、關鍵sql語句,盡量簡化,不要包含太多的巢狀,避免執行計畫錯誤的可能,原則上不能超過2層。
2、sql語句包含多表連線時,建議使用表別名,對每個欄位的使用都要帶上表別名,例如: select a.col1, a.col2, b.col3 from table_name a, tableb b where a.col4=b.col5;
3、使用select語句時,禁止使用select * ,應當指出具體查詢的欄位名,例如:select col1,col2,col3,… from table_name;。
4、使用insert語句時,禁止使用 insert into table_name values(?,?,?),不應不指定欄位名直接插入values,應指定插入的欄位名,例如: insert into table_name (col1, col2,…) values(?,?,…)
5、避免在where使用'1=1','1=2'這種表示式作為部分條件,例如: select col1, col2 from table_name where 1=1 and col1 >0。
6、在進行多條記錄的增加、修改、刪除時,建議使用批量提交,降低事務的提交頻度。
7、sql語句要繫結變數實現sql語句的共享,禁止使用常量
8、盡量少用表之間的巢狀連線。
9、盡量使用exists、not exists 替代 in、not in(大部份情況下exists 、not exists的效能都比in 、not in 好)。
10、使用union 的時候如果沒有去除重複資料的要求,建議盡量用union all替代。
11、盡量避免使用order by和group by排序操作,因為大量的排序操作影響系統效能。如必須使用排序操作,盡量建立在有索引的列上。
12、索引的建立應慎重考慮,不是越多越好。索引可以提高相應的select的效率,但同時也降低了insert、update 的效率。
13、where 條件中的索引列應避免使用<>、not、 is null、is not null、 like 『%***x%』、』%***』、oracle系統函式等,這些常會使索引失效。
14、避免不必要的型別轉換
15、in、or子句常會使用工作表,使索引失效;如果不產生大量重複值,可以考慮把子句拆開;拆開的子句中應該包含索引。
16、使用rowid提高檢索速度。對select得到的單行記錄,需進行delete、update操作時,使用rowid將會使效率大大提高。
17、系統可能選擇基於規則的優化器,所以將結果集返回資料量小的表作為驅動表(from後邊最後乙個表)。
18、盡量避免對索引列進行計算。如對索引列計算較多,請讓資料庫管理員建立函式索引。
19、盡量不用聯合列比如:a||b=c||d。
20、主鍵盡量不要用oracle指定的名稱,要自己根據表來命名。
21、任何對列的操作都將導致表掃瞄,它包括資料庫函式、計算表示式等等,查詢時要盡可能將操作移至等號右邊。
22、復合索引建立時,建議按欄位可選性高低進行排序,即字段值多的排在前面。
oracle SQL書寫注意問題
1.在oracle中實現select top n 由於oracle不支援select top語句,所以在oracle中經常是用order by跟rownum的組合來實現select top n的查詢。簡單地說,實現方法如下所示 select 列名 列名 from select 列名 列名 from ...
CSS 書寫規範
本文是參考了css森林中的規範,並結合之前幾個專案積累所書寫的乙個基本規範。不敢說是原創,所以鄭重感謝一下css森林。同時,本文件也處於持續改進中。1.基本 css檔案中,選擇器書寫按照 標籤 標籤偽類 id 類 覆蓋 排序,同一型別寫在一起 進行覆蓋時,也按照這樣乙個順序。css定義中,屬性的書寫...
xml書寫規範
xml也就是擴充套件標識語言,可以實現跨平台,真正做到資料和顯示分離,對於webservices等其他網路上資料的傳輸等較多使用。下邊根據個人理解簡單介紹一下xml的一些規範。1 xml文件有且只有乙個根標籤,所謂的根標籤就是一對 根標籤 和就是根標籤了 2 xml文件內沒乙個開始標籤都必須對應乙個...