数据库优化---数据库表设计

主键设计

主键尽量不要使用业务字段:

  • 数据和主键索引是绑定一起的,业务字段更新频繁,一旦修改,索引也要跟着变
  • 使用主键自增的性能会快很多,主键自增就会让数据顺讯添加到表中

多表关系

在设计数据库的时候,表间关系尽量避免出现多对多,当出现多对多的时候 应当引入第三个表,是多对多变成1对多

逻辑删除与反范式

  • 为了查询效率,可以做冗余字段的设计(空间换时间,属于一种反范式设计)
  • 在删除的时候 使用逻辑逻辑删除 不使用物理删除
三范式设计目的:减少冗余字段和重复数据
  • 字段具有原子性,不可拆分
  • 依赖于全部主键,而非部分主键
  • 只依赖于主键,非主键字段互不依赖
反范式设计目的:满足业务逻辑,提高查询速度

字段类型

1.能用整型就用整数类型
2.char 和varchar

  • char 不可变,查询效率高,可能造成存储浪费
  • varchar 可变,查询效率不如char 节省空间
主键和被索引的字段不能为NULL ,索引不存储NULL,查询时不会去统计,所有在索引字段需要为NULL的时候可以设置为0
对于字段一定不要忘了考虑其是否可以设置为默认值

选择合适的引擎

innoDB :
  • innoDB给mysql提供了具有提交,回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎
  • 支持行级锁和表级锁
  • 并发访问时效率高(事务和行级锁的原因)
  • 数据恢复可食用事务日志,恢复速度快,
  • 支持外键约束
  • 插入/更新/主键查询速度快
  • 需要内存和硬盘多,相较耗费资源
MyISAM :
  • 不支持事务,
  • 不支持外键约束
  • 只支持表级锁
  • 批量查询/插入/count()速度快
  • 简单,适合小型项目/以批量插入和查询为主的系统(内部管理系统)
  • 查询多 MyISAM会更快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值