mysql优化

本文详细介绍了SQL优化的关键技巧,包括查看执行计划以判断效率,利用索引提高查询速度,区分聚簇索引和二级索引,以及union与unionall、exists与notexists的选择及其对性能的影响。同时提到了慢查询日志的使用方法。
摘要由CSDN通过智能技术生成

大概的优化思路

先看sql的执行计划,根据执行计划和当前的逻辑判断sql是不是最优解。提高性能主要的方式还是使用索引,尽量不要使用索引。

执行计划

  1. 慢查询日志
    当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中。默认不开启。采样的时候手工开启。可以帮助我们找出执行慢的 SQL 语句
    show variables like ‘slow_query_log’;
    查看执行慢于多少秒的 SQL 会记录到日志文件中
    show variables like ‘long_query_time’;
    可以使用模糊搜索,查看所有含有 query 的变量信息
    show variables like ‘%query%’;
  2. 执行计划
    1. EXPLAIN SELECT ……
      经常使用的方式,查看 sql 的执行计划
      在这里插入图片描述

    2. EXPLAIN EXTENDED SELECT ……
      将执行计划"反编译"成 SELECT 语句,运行 SHOW WARNINGS ,可得到被 MySQL优化器优化后的查询语句。

    3. EXPLAIN PARTITIONS SELECT ……
      用于分区表的 EXPLAIN 生成 QEP 的信息,用来查看索引是否正在被使用,并且输出其使用的索引的信息。

索引

聚簇索引:主键索引就是聚簇索引。
二级索引:除了聚簇索引之外的就是二级索引。
聚簇索引和二级索引的区别:二级索引记录当前列的信息和主键id,查询叶子节点不包含的信息会发生回表。

sql优化

  1. union 和 union all的区别:使用 union 会把查询结果先插入到一个临时表里面,然后再去重。所以union的效率比 union all 的效率高
  2. 使用exists 和 not exists 替换 in 和 not in 前者索引能生效,后者会全表扫描。

==========持续完善中

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值