模型设计
- 适度冗余,让Query尽量减少Join
- 大字段垂直拆分summary表优化(表的垂直拆分)
- 大表的水平拆分-基于类型的分拆优化
- 统计表-准实时优化(通过定时统计数据代替实时统计数据)
满足以下条件,可以考虑使用定时统计表:
1.统计信息的准确性要求并不是特别严格
2.统计信息对时间并不是太敏感
3.统计信息的访问非常频繁,重复执行较多
4.参与统计数据量较大
合适的数据类型
- 选用更小的数据类型减少存储空间,使查询相同数据需要的IO资源降低
- 通过合适的数据类型加速数据的比较
(比如,"Y-m-d" 时间使用varchar存储与使用date存储,在比较时date类型速度更快)
再比如,同样存储时间格式,timstamp占用空间对少,只需要四个字节,如果不需要存储到1970年之前的时间,使用timestamp
存储时间,可以减少存储空间
规范的对象名称
- 数据库和表名尽可能和所服务的业务模块名一致
- 服务于同意子模块的一类表尽量以子模块为前缀或者后缀
- 字段名称尽量保持和实际数据响应
- 索引名称尽量包含所有的检索字段名或者缩写
- 约束其他对象也应该尽可能包含所属表或者其他对象,以表名各自关系