加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

简单知晓下MySQL上最实用的军规

发布时间:2023-10-10 15:21:07 所属栏目:MySql教程 来源:
导读:下文主要给大家带来MySQL上最实用的军规,希望这些内容能够带给大家实际用处,这也是我编辑MySQL上最实用的军规这篇文章的主要目的。好了,废话不多说,大家直接看下文吧
下文主要给大家带来MySQL上最实用的军规,希望这些内容能够带给大家实际用处,这也是我编辑MySQL上最实用的军规这篇文章的主要目的。好了,废话不多说,大家直接看下文吧                                                          
 
一、核心军规
 
- 不在数据库做运算:cpu计算务必移至业务层
 
- 控制单表数据量:单表记录控制在1000w
 
- 控制列数量:字段数控制在20以内
 
- 平衡范式与冗余:为提高效率牺牲范式设计,冗余数据
 
- 拒绝3B:拒绝大sql,大事物,大批量
 
二、字段类军规
 
- 用好数值类型
 
           tinyint(1Byte)
 
           smallint(2Byte)
 
           mediumint(3Byte)
 
           int(4Byte)
 
           bigint(8Byte)
 
           bad case:int(1)/int(11)
 
- 字符转化为数字
 
           用int而不是char(15)存储ip
 
- 避免使用NULL字段
 
           NULL字段很难查询优化
 
           NULL字段的索引需要额外空间
 
           NULL字段的复合索引无效
 
- 少用text/blob
 
           varchar的性能会比text高很多
 
           实在避免不了blob,请拆表
 
- 不在数据库里存图片
 
三、索引类军规
 
简单了解下MySQL上最实用的军规
 
- 谨慎合理使用索引
 
           改善查询、减慢更新
 
           索引一定不是越多越好(能不加就不加,要加的一定得加)
 
           覆盖记录条数过多不适合建索引,例如“性别”
 
- 字符字段必须建前缀索引
 
- 不在索引做列运算
 
           bad case:
 
           select id where age +1 = 10;
 
- innodb主键推荐使用自增列
 
           主键建立聚簇索引
 
           主键不应该被修改
 
           字符串不应该做主键
 
           如果不指定主键,innodb会使用唯一且非空值索引代替
 
- 不用外键
 
           请由程序保证约束
 
四、sql类军规
 
- sql语句尽可能简单
 
           一条sql只能在一个cpu运算
 
           大语句拆小语句,减少锁时间
 
           一条大sql可以堵死整个库
 
- 简单的事务
 
           事务时间尽可能短
 
           bad case:
 
           上传图片事务
 
- 避免使用trig/func
 
           触发器、函数不用
 
           客户端程序取而代之
 
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章