MYSQL优化杂谈五,表结构设计优化

模型设计

  • 适度冗余,让Query尽量减少Join
  • 大字段垂直拆分summary表优化(表的垂直拆分)
  • 大表的水平拆分-基于类型的分拆优化
  • 统计表-准实时优化(通过定时统计数据代替实时统计数据)
满足以下条件,可以考虑使用定时统计表:
1.统计信息的准确性要求并不是特别严格
2.统计信息对时间并不是太敏感
3.统计信息的访问非常频繁,重复执行较多
4.参与统计数据量较大

合适的数据类型

  • 选用更小的数据类型减少存储空间,使查询相同数据需要的IO资源降低
  • 通过合适的数据类型加速数据的比较
(比如,"Y-m-d" 时间使用varchar存储与使用date存储,在比较时date类型速度更快)
再比如,同样存储时间格式,timstamp占用空间对少,只需要四个字节,如果不需要存储到1970年之前的时间,使用timestamp
存储时间,可以减少存储空间

规范的对象名称

  • 数据库和表名尽可能和所服务的业务模块名一致
  • 服务于同意子模块的一类表尽量以子模块为前缀或者后缀
  • 字段名称尽量保持和实际数据响应
  • 索引名称尽量包含所有的检索字段名或者缩写
  • 约束其他对象也应该尽可能包含所属表或者其他对象,以表名各自关系

你可能感兴趣的:(MYSQL优化杂谈五,表结构设计优化)