数据库设计规范总结

 此文章是自己阅读阿里java开发手册、查看网上资源以及自己实际项目下编写

  1. 表名统一使用t_开头,字体全部使用小写,多单词间使用下划线“_”分隔,不超过32个字符。表名加上中文注释!
  2. 字段规则为‘驼峰命名法’,应该和Entity字段对应,不超过32个字符,禁止使用无关单词、汉语拼音!字段必须加上中文注释!
  3. 必须建主键,若无特殊说明,id通常为自增主键。
  4. 统一使用InnDB存储引擎。
  5. 字符集使用UTF8MB4,它是utf8的超集。
  6. 禁止使用存储过程、视图、触发器、UDF(即自定义函数)等(此条仅适用于后台程序,DBA等维护统计与后台程序无关的酌情)。
  7. 不要存储大文件或者图片,存url或使用NAS什么的多好。
  8. 单实例表数目不多于500个。
  9. 单表列小于30个。
  10. 禁止使用外键,外键会影响性能,只需要在程序控制就行(随着数据的增长,插入一条数据都需要做验证导致程序越来越慢)。
  11. 字段应尽量满足NOT NULL并提供默认值,禁止使用非索引列作为检索条件进行update、delete等修改数据操作(inndb的锁锁了什么)。
  12. 禁止使用text、blob类型,会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库性能。
  13. 禁止使用小数存储货币货币使用整数
  14. 字段长度尽量取小,如手机号varchar(20)足够满足区号或国家号,或者干脆varchar(11)
  15. 不要用枚举类型,使用tinyint,枚举会增加DDL操作,况且枚举本来存储的tinyint
  16. 单表索引不超过5个,太多增加插入数据重排的性能消耗,实际上已经达不到有效的过滤数据的效果。
  17. 在更新频繁,区分度不高的字段上建索引是没有意义的,频繁更新索引会严重降低性能
  18. 组合索引将区分度高的字段放在最左边,能更加有意义的过滤数据
  19. 禁止使用隐式转换,例如select id from user where age=’22’,会导致全表扫描
  20. 禁止在where条件字段使用函数表达式,例如select id from user where to_char(createDate)<’2016-10-01’,应修改为select id from user where createDate<to_date(’2016-10-01 00:00:00’)
  21. 禁止使用负向查询,以及使用%开头的模糊查询,负向查询NOT、!= 、<> 、!< 、!>、NOT IN、NOT LIKE等,会导致全表扫描
  22. 禁止大表使用JOIN,使用子查询,会产生临时表,消耗较多的内存与CPU,极大影响数据库性能
  23. 应该用IN条件代替OR条件(IN的二分查找优化)
  24. 【推荐】如果有 order by 的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。正例:where a=? and b=? order by c; 索引:a_b_c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值