当前位置: 首页 > news >正文

MySQL表结构设计规范

一、表设计

1. 命名规范

  • 表名由小写英文字母下划线组成
  • 表必须填写描述信息
  • 表名中的英文单词应该使用单数形式
  • 临时表以 tmp 为前缀,以日期为后缀
  • 备份表以 bak 为前缀,以日期为后缀
  • 使用hash、md5 进行散表,表名后缀使用16进制

2. 设计规范

  • 必须定义主键,一般默认为id,整型自增
  • 主键不允许修改,一般采用业务无关字段
  • 表必须包含 gmt_creategmt_modified 字段记录创建时间和修改时间
  • 禁止使用外键
  • 慎用触发器和存储过程。将业务逻辑放到应用层更合适
  • 单条记录禁止超过 8kb
  • 单表列数一般不超过50
  • 单表数据量建议控制在500万行一下、2GB内

3. 字段设计

  • 在满足数据存储和扩展需要的前提下,尽量使用更小的数据类型
  • 在表达是否概念时,使用 is_xxx 形式命
  • 建立索引的字段必须定义为 not null,并设置 default
  • 存储小数尽量使用decimal,避免丢失精度
  • 避免使用小数存储金额,一般转换为最小单位的整数倍存储
  • 避免使用 text、blob 存储大文本、文件、图片,应使用文件系统存储
  • varchar 要根据业务实际需要进行长度控制。虽然在存储层面根据实际长度存储,但在内存分配时是根据指定长度,不合理的长度设计会导致内存分配不合理

4. 索引设计

  • 选择区分度高的字段作为索引项
  • 避免在频繁更新的字段上建索引
  • 单表索引建议控制在5个以内
  • 在varchar字段上建立索引时,必须指定索引长度,没必要对全字段建索引
  • 建立联合索引时要根据左前缀原则避免冗余,其次要把区分度高的字段放在前面
http://www.lryc.cn/news/159804.html

相关文章:

  • 如何利用ProcessOn 做资产管理流程图
  • geopandas 笔记:geometry上的操作汇总
  • 【MongoDB】Ubuntu22.04 下安装 MongoDB | 用户权限认证 | skynet.db.mongo 模块使用
  • Python对象序列化
  • jmeter 准确的吞吐量定时器 Precise Throughput Timer
  • 后端/DFT/ATPG/PCB/SignOff设计常用工具/操作/流程及一些文件类型
  • jvm 程序计算器 程序计数器是否溢出 程序计数器是做什么的 java程序计数器会内存溢出吗 程序计数器作用与用处 jvm内存模型 jvm合集(一)
  • 关于近期小程序测试的常见漏洞演示
  • 磐基2.0部署apisix集群
  • Python requests爬虫豆瓣图片返回数据为空。
  • 【Spring事务的实现原理】
  • 摆动输入连杆夹持机构
  • C++——类与对象(下篇)
  • stm32 freeRTOS lwip TCP快速发送,内存泄露问题
  • Ei、Scopus双检索 | 2024年第三届人工智能与机器学习前沿国际会议(FAIML 2024)
  • win10环境下搭建QT+opencv
  • React16、18 使用 Redux
  • 【Python】Python运算符/部分函数对应的双下划线魔法方法
  • Macs Fan Control 1.5.16 Pro for mac风扇调节软件
  • 某技术公司技术二面面试题总结
  • 初试小程序轮播组件
  • Centos7 Yum安装PHP7.2
  • 2020年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 30天入门Python(基础篇)——第2天:Python安装(保姆级)与IDE的认识与选择+详细安装教程
  • 软件测试/测试开发丨ChatGPT:带你进入智能对话的新时代
  • logback/log4j基本配置和标签详解
  • 雅思 《九分达人》阅读练习(二)
  • [论文笔记] Gunrock: A High-Performance Graph Processing Library on the GPU
  • A Guide to PriorityQueue
  • Jenkins教程—构建多分支流水线项目