建表規范
- 統一存儲引擎:
InnoDB
- 統一編碼格式:
utf8mb4_general_ci
- 表名統一使用單數,不使用復數
- 表必備三字段:id, create_time, update_time
- id: 主鍵,類型為unsigned int(10)、自增、步長為1
- create_time, update_time: 創建時間,更新時間,類型unsigned int(10)
- 禁用保留字,如desc、range、match、delayed等,參考官方保留字:https://blog.csdn.net/tales522/article/details/100188300
- 字段名統一使用下劃線小寫字母,禁止使用駝峰命名
- 字段必須要有注釋,如果是狀態枚舉值,注釋中一一列出包含的數值
索引規范
- 唯一索引名為
uk_
字段名;普通索引名則為idx_
字段名。 說明:uk_即unique key;idx_即index的簡稱 - 在varchar字段上建立索引時,必須指定索引長度,沒必要對全字段建立索引,根據實際文本區分度決定索引長度
- 禁止使用外鍵與級聯,一切外鍵概念必須在應用層解決
SQL語句規范
- 超過三個表禁止join
- like搜索嚴禁左模糊或者全模糊
- 禁止使用存儲過程
- SQL性能優化的目標:至少要達到range級別,要求是ref級別,如果可以是consts最好
- 1)consts單表中最多只有一個匹配行(主鍵或者唯一索引),在優化階段即可讀取到數據。
- 2)ref指的是使用普通的索引。(normal index)
- 3)range對索引進范圍檢索。
- 反例:explain表的結果,type=index,索引物理文件全掃描,速度非常慢,這個index級別比較range還低,與全表掃描是小巫見大巫。