数据库优化详解

一、优化方向

!在这里插入图片描述](https://img-blog.csdnimg.cn/20200306094937203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzOTQ1MjQ2,size_16,color_FFFFFF,t_70)

可以看出来,数据结构、SQL、索引是成本最低,且效果最好的优化手段。

数据库优化从以下几个方面优化:

  • 数据库设计—三大范式、字段、表结构

  • 数据库索引

  • 存储过程 (模块化编程,可以提高速度)

  • 分表分库 (水平分割,垂直分割)

  • 主从复制、读写分离

  • SQL 调优

  • 对 MySQL 配置优化 (配置最大并发数 my.ini, 调整缓存大小)

  • 定时清除不需要的数据,定时进行碎片整理


二、具体优化方案

(一)数据库设计—三大范式、字段、表结构

1.根据数据库三范式来进行表结构的设计。设计表结构时,就需要考虑如何设计才能更有效的查询。

  • 第一范式:数据表中每个字段都必须是不可拆分的最小单元,也就是确保每一列的原子性
  • 第二范式:满足一范式后,表中每一列必须有唯一性,都必须依赖于主键
  • 第三范式:满足二范式后,表中的每一列只与主键直接相关而不是间接相关 (外键也是直接相关),字段没有冗余。

2.其他:

  • 尽量使用 TINYINT、SMALLINT、MEDIUM_INT 作为整数类型而非 INT,如果非负则加上 UNSIGNED
  • VARCHAR 的长度只分配真正需要的空间
  • 尽量使用整数代替字符串类型
  • 单表不要有太多字段,建议在 20 以内
  • 避免使用 NULL 字段,很难查询优化且占用额外索引空间
  • 不建议使用 select * from t ,用具体的字段列表代替 “*”,不要返回用不到的任何字段。尽量避免向客户 端返回大数据量,若数据量过大,应该考虑相应需求是否合理
  • 表与表之间通过一个冗余字段来关联,要比直接使用 JOIN 有更好的性能
  • select count (*) from table;这样不带任何条件的 count 会引起全表扫描

(二)索引

索引也算数据库设计的一部分

1.一般来说࿰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值