美文网首页
sql优化之合理安排顺序

sql优化之合理安排顺序

作者: 丨飞翔的蛋花丨 | 来源:发表于2015-10-20 16:15 被阅读47次

今天在查看每天程序的性能报表时,发现一个url访问速度略慢,深入查找原因后发现是由于一个sql语句的问题引起的,记录在此。

1. 应用场景

业务的场景相对简单,是一个表A与表B的多对多映射,使用了表C记录这种映射关系。

2. 问题分析

原来的sql语句如下:

select * from A as tableA
inner join
(select AID, BID from C) as temp
on temp.AID = tableA.AID
where B.BID = 123
orderby XXX DESC
limit 3;

一个挺简单的业务,A,B表的数据量也不大,大概只在10W左右,但是整个SQL执行下来竟然要差不多100MS,通过explain查看执行计划,如下:

慢查询1
虽然表C中索引都有,但是由于中间那句(select AID, BID from C) as temp的原因,导致整张表被扫描了一遍,索引完全失效。

3. 解决方法

既然已经分析出了问题所在,解决思路也就很明显了,即想法办命中索引。就着这个思路,将sql语句稍作修改如下:

select * from A as tableA
where a.ID in
(select AID from C where BID = 123) 
orderby XXX DESC
limit 3;

通过explain之后可以看到执行计划如下:

优化后查询

非常好的命中索引,执行时间也提升了近十倍。

相关文章

  • sql优化之合理安排顺序

    今天在查看每天程序的性能报表时,发现一个url访问速度略慢,深入查找原因后发现是由于一个sql语句的问题引起的,记...

  • SQL性能优化

    SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SU...

  • SQL性能优化

    SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SU...

  • Mysql数据库优化

    数据库优化顺序:Sql及索引->数据库表结构->系统配置->硬件 第一章:Sql语句优化 如何判断有问题Sql? ...

  • 2018-07-01

    SQL优化改写之美--MySQL虚拟列、伪列实现对SQL的优化 慢SQL文本如下: SQL执行时长达38S,获取3...

  • 第五弹:MySQL查询和调优

    SQL查询顺序 调优 数据库调优是个复杂的过程:主要包括以下几个方面:表结构索引和SQL优化,服务器端优化,存储引...

  • Mysql进阶知识笔记

    一、SQL执行顺序以及常见SQL的join查询 sql执行顺序: 手写 机读顺序 sql机器执行顺序sql机器执行...

  • SQL执行与优化

    SQL优化 执行计划,表关联查询顺序,优化策略与思路 MYSQL执行过程 一、MySQL架构总览: 二、查询执行流...

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • MySQL优化

    数据库SQL优化大总结之 百万级数据库优化方案

网友评论

      本文标题:sql优化之合理安排顺序

      本文链接:https://www.haomeiwen.com/subject/vnozcttx.html