mysql scheme 设计_MySQL之 schema设计中的陷阱

> 本节内容总结自《High Performance MySQL》

设计MySQL应该注意以下几点:

1. 避免太多的列:MySQL的存储引擎API工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转码成行数据结构的操作代价是非常高的。MyISAM和InnoDB的行结构总是需要转换,转换的代价依赖于列的数量。

2. 避免太多的表关联:一个粗略的经验法则,如果希望查询执行的快速且并发性很好,单个查询最好在12个表以内做关联。

3. 避免过度使用枚举:仔细考虑是否需要使用枚举,如果不是在枚举列表的末尾增加值中要做一次ALTER TABLE操作。

4. 避免变相使用枚举:枚举列允许在列中存储一组定义值的单个值,集合列则允许在列中存储一组定义之中的一个或多个值,要注意选择合适的类型。

5. 避免使用一些奇怪的值代替NULL:在列中使用NOT NULL是高效的,即使需要存储一个事实上的空值也不一定要使用NULL,可以使用一些特殊的不可能出现的数字或空字符串代替。但是遵循这个原则也不要走极端。当确实需要表示未知值时也不要害怕使用NULL,因为一些未知的数字有可能导致代码复杂很多,并容易引入bug。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值