1、資料庫和表取名要有意義,最好不要超過32字元,命名都使用小寫字母或單詞並用下劃線隔開,字段最好不要有關鍵字等
2、臨時資料建議以tmp_為字首並以日期為字尾,備份資料建議以bak_為字首並以日期為字尾
3、資料庫和表的字符集統一使用utf8(表情用utfmb4)
4、表和字段都要新增注釋
5、儲存相同資料的列,建議型別一致,否則關聯查詢不走索引
6、盡量控制單錶資料量大小,建議控制在500萬條內容
7、建議少使用分割槽(特殊情況除外),如果查詢資料從多個分割槽出,可能更慢
8、mysql限制每個表最多儲存4096列,並且每一行資料的大小不能超過65535位元組,如果表過大建議分拆成多張小表(資料做到冷熱分離,減小表的寬度,可以提公升io和快取命中率)
9、在滿足需求的情況下,優先選擇符合儲存長度最小的資料型別(欄位越長索引需要更大空間,頁儲存資料越大,遍歷時所需io次數越多,索引效能也就越差)
比如自增id使用無符號整數、ip存整型
10、盡可能把所有列定義為not null
索引null列需要額外的空間來儲存,所以要占用更多的空間
11、時間儲存建議使用timestamp,而不是datetime
12、財務相關金額建議使用decimal,我們公司用的integer(分)
13、限制每張表索引個數
14、sql避免出現顯式和隱式轉換
15、like時,避免使用%ss%,建議%ss(它是走索引的)
16、使用left join或not exists來優化not in(我在開發中基本不用聯表查,很少用)
17、禁止使用select * (指定字段)
18、如果查詢結果為1條,建議sql加limit 1
19、in不要超過500個
20、禁止where時對字段計算(不走索引)
21、union all替代union
22、複雜sql,建議拆分成小的sql
資料庫相關規範建議
核心 1 不在資料庫做運算cpu計算務必移至業務層 2 控制單錶資料量 單錶記錄控制在1000w 3 控制列數量 字段數控制在20以內 4 平衡正規化與冗餘 為提高效率犧牲正規化設計,冗餘資料 5 拒絕3b 拒絕大sql,大事物,大批量 欄位類 1 用好數值型別 tinyint 1byte smal...
資料庫設計規範
使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...
資料庫設計規範
csm簡寫會方便很多 就不要用member id,一致性方便大家理解 system.currenttimemillis 進行儲存text查詢是會產生臨時磁碟檔案,效能差進行擷取儲存型別 占用位元組 範圍tinyint 1 128 127 smallint 2 32768 32767 mediumin...