mysql查询基础

客户端/服务端通信

     mysql客户端和服务端之间的通信协议是“双半工”的:再任意时刻,要么由服务端向客户端发送数据,反之亦然,但是这两个动作不能同时发生。所以,我们无法将一个消息切成很多独立的小块来分开发送。这也就是一个查询语句很长,所查数据包很大的时候,参数max_allowed_packet就要相对调大的原因

查询状态

    mysql的每个连接,任何时间都有一个状态,最简单的方式用show full processlist;查看
    sleep:    线程正在等待客户端发出请求
    query:    线程正在执行查询
    analyzing and statistics:  线程正在收集存储引擎的统计信息,并生成执行计划
    copying to tmp table : 线程正在复制临时表
    sorting result:  线程正在对结果集进行排序

1)查询缓存:再解析一个查询语句之前,如果查询缓存时打开的,mysql有先查询该查询时否命中于查询缓存中的数据
2)查询优化处理:
1,将sql转化为执行计划
2,解析sql,预处理,优化sql执行计划

导致mysql优化器选择错误执行计划的原因

1) 统计信息不准确
2) 执行计划中的成本估算不等于实际的执行成本
3) 优化模型选择不正确(基于成本的/基于规则的)

mysql中in与or的关系

mysql将in()列表中的数据先进性排序,然后通过二分查找的方式来确定表中的值是否满足条件,对于in()中有大量取值的时候,mysql的处理会更快

查询语句注意点

1)使用等价变换规则
2)使用子查询优化
3)覆盖索引扫描

优化关联查询

1)确保on , using子句中的列上有索引
2)确保group by ,order by 表达式只涉及到一个表中的列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶博雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值