MySQL的优化

优化数据库、表结构的设计,比如:

  1. 合理的选用字段的数据类型,不同的数据类型的存储和检索方式不同,对应的性能也不同,尽量选用存储空间较小,长度固定的类型

  2. 合理地选用表的存储引擎:常用的存储引擎有MyISAM、InnoDB、Memory

    • MyISAM不支持事务,表级锁,但是查询速度快
    • InnoDB支持事务,行级锁
  3. 设计表的时候尽量遵循三大范式

    • 1NF:数据库表的每一列都是不可分割的原子数据项(比如员工信息表中员工的住址‘中国北京’可以拆分成国家与城市)
    • 2NF:数据库表中的每一列都和主键相关,不能只与主键的某一部分相关,主要针对联合主键而言(比如订单表中有(订单号,产品号,产品数量,产品价格,订单时间),其中订单号与产品号为联合主键,此时产品数量与产品价格只和产品号有关,应该拆分开)
    • 3NF:数据表中的每一列数据都和主键直接相关,而不能间接相关(比如员工信息表中有(员工id,姓名,年龄,部门,部门领导)其中员工id为主键,此时部门领导与员工id不是直接相关,应该拆开)
  4. 尽量减少表的宽度(就是表中字段字段的个数)

  5. 读写分离:将经常增删的数据与经常select的数据尽量分开存储

  6. 冷热数据分离:将常用的字段与不常用的字段尽量分开存储

数据库参数配置优化,比如:

  1. 修改最大连接数
  2. 修改数据库占用的内存

优化SQL语句,比如:

  1. 尽量使用子查询不使用关联查询
  2. 不写会导致引擎放弃使用索引而进行全表扫描的sql,比如
    • 避免在 where 子句中使用!=或<>操作符
    • 避免在 where 子句中对字段进行 null 值判断
    • 字段的前半部分不确定时不要使用模糊查询%
  3. 不写没有意义的查询
  4. 可以用表变量代替临时表
  5. 尽量避免大事务操作,提高系统并发能力
  6. 使用事务时避免一次处理太多的数据
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值