1.針對於任何字段若是爲非負數,必須是 unsigned;數據庫
2.表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除; (1爲是;0爲否)索引
3.主鍵索引名爲 pk_字段名;惟一索引名爲 uk_字段名;普通索引名則爲 idx_字段名;ci
4.小數類型爲 decimal,禁止使用 float 和 double;字符串
5.若是存儲的字符串長度幾乎相等,使用 char 定長字符串類型table
6.表必備三字段:id, gmt_create, gmt_modified語法
7.合適的字符存儲長度,不但節約數據庫表空間、節約索引存儲,更重要的是提高檢 索速度;float
8.利用覆蓋索引來進行查詢操做,避免回表;im
9.建組合索引的時候,區分度最高的在最左邊;統計
10.防止因字段類型不一樣形成的隱式轉換,致使索引失效。數據
1.不要使用 count(列名)或 count(常量)來替代 count(*),count(*)是 SQL92 定義的 標準統計行數的語法,跟數據庫無關,跟 NULL 和非 NULL 無關
解釋:count(*)會統計值爲 NULL 的行,而 count(列名)不會統計此列爲 NULL 值的行
2.count(distinct col) 計算該列除 NULL 以外的不重複行數,注意 count(distinct col1, col2) 若是其中一列全爲 NULL,那麼即便另外一列有不一樣的值,也返回爲 0
3.當某一列的值全是 NULL 時,count(col)的返回結果爲 0,但 sum(col)的返回結果爲 NULL,所以使用 sum()時需注意 NPE 問題
能夠使用以下方式來避免 sum 的 NPE 問題:SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table