mysql left join 多个count_Mysql查询语句优化

本文探讨了如何优化包含多个COUNT()的MySQL查询,特别是LEFT JOIN的使用。通过分析查询,强调了最左前缀原则、避免不等于操作符、使用覆盖索引等优化策略。此外,还提出了优化COUNT()、重构复杂查询、优化LIMIT语句的建议,并介绍了MySQL查询提示如SQL_NO_CACHE和STRAIGHT_JOIN的作用。
摘要由CSDN通过智能技术生成

ae12f23f85f42badc347c5f5c678e2e0.png

前言

上一篇文章 《MySQL索引原理机器优化》讲了索引的一些原理以及优化方案,这一次学习对查询的优化,毕竟快速的查找到数据才是我们的最终目的.

分析查询

想要对一条查询语句进行优化,首先要对其进行分析,MySQL提供了这个机制, 可以通过explain sql或者desc sql的语法去获取MySQL对某一条语句的执行计划(MySQL优化之后的),explain的用法这里就不再赘述了,在另外一篇文章中有详细的解读.

查询优化

对一条sql的优化可以分为两部分,第一部分是对语句的优化,比如将子查询改写为join等,第二部分是与索引相关的优化,在这一阶段可能会修改语句以让查询尽可能的命中索引,甚至会通过修改索引来达到这个目的.

与索引相关的优化

首先我们需要让查询尽可能的命中索引,通常情况下在一张表上会有各种花里胡哨的查询,我们很难让每一个查询都完美命中,因此我们假设认为我们在为bad case 做优化,不考虑对其他的查询造成的影响.

最左前缀

在使用联合索引的时候,要想多字段命中索引,需要遵循最左前缀原则.

假如现在表上有school_age的联合索引,那么下面的语句是可以使用索引的:

# 根据school查询
select * from user where school = '卡塞尔'
# 根据scholl和age进行查询
select * fr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值