1.单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。
2.用DECIMAL代替FLOAT和DOUBLE存储精确浮点数,越简单越好:将字符转化为数字、使用TINYINT来代替ENUM类型
3.重要的SQL必须被索引,比如:
(1) UPDATE、DELETE语句的WHERE条件列
(2) ORDER BY、GROUPBY、DISTINCT的字段
4.不要用select *,查询哪几个字段就select 这几个字段
5.研发要经常使用explain,如果发现索引选择性差,必须让他们学会使用hint
6.limit分页注意效率。Limit越大,效率越低。可以改写limit,比如例子改写:
select id from tlimit 10000, 10; => select id from t where id > 10000limit10;
7.分层领域模型规约
- DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
- DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
- BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。
- AO(Application Object):应用对象,在 Web 层与 Service 层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
- VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
- Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传