数据库设计,建议规范

1、数据库和表取名要有意义,最好不要超过32字符,命名都使用小写字母或单词并用下划线隔开,字段最好不要有关键字等
2、临时数据建议以tmp_为前缀并以日期为后缀,备份数据建议以bak_为前缀并以日期为后缀
3、数据库和表的字符集统一使用UTF8(表情用utfmb4)
4、表和字段都要添加注释
5、存储相同数据的列,建议类型一致,否则关联查询不走索引
6、尽量控制单表数据量大小,建议控制在500万条内容
7、建议少使用分区(特殊情况除外),如果查询数据从多个分区出,可能更慢
8、Mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节,如果表过大建议分拆成多张小表(数据做到冷热分离,减小表的宽度,可以提升IO和缓存命中率)
9、在满足需求的情况下,优先选择符合存储长度最小的数据类型(字段越长索引需要更大空间,页存储数据越大,遍历时所需IO次数越多,索引性能也就越差)
比如自增ID使用无符号整数、IP存整型
10、尽可能把所有列定义为NOT NULL
索引NULL列需要额外的空间来保存,所以要占用更多的空间
11、时间存储建议使用TIMESTAMP,而不是DATETIME
12、财务相关金额建议使用DECIMAL,我们公司用的Integer(分)
13、限制每张表索引个数
14、SQL避免出现显式和隐式转换
15、like时,避免使用%ss%,建议%ss(它是走索引的)
16、使用left join或not exists来优化not in(我在开发中基本不用联表查,很少用)
17、禁止使用SELECT * (指定字段)
18、如果查询结果为1条,建议SQL加limit 1
19、in不要超过500个
20、禁止where时对字段计算(不走索引)
21、UNION ALL替代UNION
22、复杂SQL,建议拆分成小的SQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值