【MySQL学习笔记】MySQL原理---企业规范约束

一、库表字段约束规范

不要因为大度而浪费性能,浪费存储


  • 不要使用mysql中的关键字进行命名(table、select等)

  • 库名、表名与字段名必须是小写字母,不能用大写!并且不能以数字开头!禁止下划线中间出现数字!

    (因为Windows中是对大小写不敏感的,Linux是对大小写敏感的,我们需要避免不必要的麻烦)

  • 表名不能用复数形式命名,应当考虑与业务名有关。单表行数超过5000万行或单表容量超过2G的要分库分表。

  • 值为小数的字段应当使用decimal避免精度丢失,禁止使用float和double类型。


如果字段表示:是或否

举例:is_vip

关键字一定要给 is 

类型一定要是 unsigned tinyint

长度为1

如果字段是:非负数

必须添加 unsigned 非负标志

如果定义:字符串长度较小

使用char,不使用varchar

超过5000可以定义为text

字段名规范:

  • 主键名:
pk_xxx
  • 唯一键名:
uk_xxx
  • 索引名:
idx_xxx

一张表中必须有至少三个属性,包括:

id

create_time

update_time
id必须为主键,为无符号 bigint 类型

create_time、update_timec 必须为 datatime 类型

单表时id必须设置自增,且每次自增步长为1


二、索引规范

  • 对业务和流程具有唯一特性的字段设计索引

    即使它是多个字段的组合也应该设置唯一索引

    达到完整性控制,唯一索引作用是避免脏数据产生


  • 多表查询(实际上最多只允许两个表)时 join 两边数据类型必须一致

    多表关联查询保证关联查询的字段也应该有索引


  • 页面上的搜索不要使用左模糊或者全模糊,是由索引的数据结构B+树导致的

  • varchar上建立索引必须指定索引长度,没必要对全字段进行索引



三、SQL开发约束

  • 不要妄想使用 count(xxx) 去替代 count(*)

  • 不要使用等于号(=)判断NULL值

    错误的演示:
    请添加图片描述

    正确的演示:
    请添加图片描述请添加图片描述


  • 不要使用外键和级联

    在高并发集群的项目中是完全不能使用

    一切外键级联的东西在应用层解决


  • 实际开发过程中不允许使用存储过程

    (因为出错很难解决问题,且存储过程没有移植性、难扩展)


  • 删除或更新数据前应先 select 查出来看看数据是否有错误

  • 子查询中含 in 的操作能避免就避免

  • 使用UTF-8作为编码格式



四、其他约束

  • orm对象关系映射框架中

    查询过程中不要用 select * 查询

    因为解析器会去解析 *

    有些数据我们未必需要查询(超大文本字段没必要查询)


  • 不要随意使用 @Transaction

    考虑各种事务回滚缓存回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值