MySQL数据库开发的 36 条军规
轉載自??MySQL數(shù)據(jù)庫開發(fā)的 36 條軍規(guī)
核心軍規(guī)
盡量不在數(shù)據(jù)庫做運算
控制單表數(shù)據(jù)量 純INT不超過10M條,含Char不超過5M條
保持表身段苗條
平衡范式和冗余
拒絕大SQL,復雜事務,大批量任務
字段類軍規(guī)
用好數(shù)值字段,盡量簡化字段位數(shù)
把字符轉化為數(shù)字
優(yōu)先使用Enum或Set
避免使用Null字段
少用并拆封Text/Blob
不在數(shù)據(jù)庫中存圖片
索引類軍規(guī)
謹慎合理添加索引
字符字段必須建立前綴索引?
不在索引列做運算
自增列或全局ID做InnoDB主鍵
盡量不用外鍵
SQL類軍規(guī)
SQL盡可能簡單
保持事務連接短小
盡可能避免使用SP/Trigger/Function
盡量不用Select *
改寫Or為IN()
改寫Or為Union
避免負向查詢和%前綴模糊查詢
Count不要使用在可Null的字段上面
減少Count(*)
Limit高效分頁,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
使用Union ALL 而不用Union
分解鏈接,保證高并發(fā)
Group By 去除排序
同數(shù)據(jù)類型的列值比較
Load Data導入數(shù)據(jù),比Insert快20倍
打散大批量更新,盡量凌晨操作
約定類軍規(guī)
隔離線上線下
禁止未經(jīng)DBA認證的子查詢
永遠不在程序段顯式加鎖
表字符集統(tǒng)一使用UTF8MB4
總結
以上是生活随笔為你收集整理的MySQL数据库开发的 36 条军规的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java并发编程之4——Java锁分解锁
- 下一篇: Redis PK Memcached,哪