- WHERE 前導列一定是使用最頻繁的列。
- 數據庫備注,字段備注,存儲過程備注,存儲過程變量備注。
- 主鍵定義,索引定義,字符集定義,數據庫表引擎定義。
- 字段類型一定要選擇最佳,字段全部NOT NULL,固定長度字段。
- 縮進。
- 永遠不要出現星號。
- INSERT INTO 寫全字段名。
- 行級操作在存儲過程,字段操作在Web服務器。
- 必設主鍵。
- 數字/字符。
- 有限的取值用ENUM。
- IN / NOT IN / OUT / OR / != / <> 引起索引失效。
- 盡量不要在列上進行操作。
- DELETE / INSERT 鎖表。
禁止使用循環。
禁止使用游標。
禁止使用超過15句sql語句。
禁止兩層以上sql語句嵌套。
變量使用前一定要定義,定義一定要在最前方。
只能使用單層IF THEN ELSE。
-
單條記錄返回一定要加LIMIT 1,避免全表掃描。
8.存儲過程內部禁止再調用存儲過程。
9.對于只讀存儲過程,Read Committed事務。
10.全部存儲過程名字需要加注釋。
11.全部字段名稱需要加注釋。
12.日期時間函數盡量用TIMESTAMP 而不是DATETIME類型。
13.GROUP BY 與ORDER BY 與DISTINCT 不要連用。
14.DISTINCT與LIMIT聯合使用,比GROUP BY要好很多。
15.SELECT * FROM (SELECT * FROM chu ORDER BY b desc,a desc LIMIT 100) AS a GROUP BY a.b;
16.禁止使用UNION,以及超過5個表的聯合查詢。
17.每一句SQL,都需要有詳細注釋。SELECT a.col_a, b.col_b FROM tb_a AS a, tb_b AS b WHERE a.col_2 = b.vol_2;