mysql高性能-查询性能优化

mysql高性能-查询性能优化

查询性能的开销 三个指标

响应的时间 扫描的行数 返回的行数

复杂语句是否需要拆分

大的delete 语句可以拆成小的 减小锁表

分解关联查询

简单的对每个表进行单表查询,然后将结果应用在程序中进行关联
优点
让缓存的效率更高 关联的表没有变化就可以使用查询缓存
查询分解 减少锁表
在应用层做关联可以更容易对数据库进行拆分 实现高i性能和可扩展
减少冗余的记录查询 应用层关联 只需要查询一次 数据库中关联查询可能需要重复的访问

mysql查询执行过程

客户端发送请求
服务器先查缓存 命中则返回
进入sql解析 预处理 再由优化器来执行对应的执行计划
mysql 根据优化器生成执行计划 调用存储api来执行计划
将结果返回客户端

mysql 客户端/服务端通信协议

半双工
多数连接数据库的库函数从mysql获取数据时,实际是从库函数的缓存获取数据。

优化器

动态优化 和 静态优化
静态优化对解析树进行分析 并完成优化 一次完成一直有效

动态优化和查询的上下文有关 也和其他因素有关

优化类型

重新定义关联表顺序
将外连接转成内连接
使用等价变换原则
优化COUNT()MIN() MAX()
min max 对于 b-tree索引 就是最左 最右
预估并转化常数表达式
覆盖索引扫描
子查询优化
提前终止查询
等值传播
列表IN()

优化关联查询

确保on 和 using 的列上有索引
一般 只需要在关联的第二张表上创建索引
group by order by 最好只涉及一个列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值