首页
学习
活动
专区
圈层
工具
发布

SQL优化 MySQL版 -分析explain SQL执行计划

教师证表 现在我把这三张表连起来查,查询条件:查询课程编号为2或教师证编号为3点老师信息; 通过这个例子,我们就可以把explain里面的参数一个一个的讲讲: 首先这个条件的主干是查询老师信息; sql...JOIN teachercarid te WHERE t.tid = c.cid AND t.tcid = te.tcid AND (c.cid = 2 or te.tcid = 3); 执行结果: SQL...(c.cid = 2 or te.tcid = 3); 执行看结果: 先看id: id此时此刻都是1,它们都对应我们的表 te 是我们的教师证表 t 就是教室表 c 是课程表 由此可见,我们编写的SQL...我们不妨来做个试验看看,我再加几条数据: 现在我们的数据变更为: course:课程表 有三条数据 teacher:教师表 有四条数据 teacherCarid:教师证表 有六条数据; 我们再看它的执行计划...中的子查询(最外层) SUBQUERY:包含子查询SQL中的子查询(非最外层) Simple:简单查询(一个SQL语句里面不包含子查询,union)都是简单查询 derived:衍生查询 触发子衍生查询只有两种

91010

SQL优化 MySQL版 -分析explain SQL执行计划与Extra

注:此文章必须有一定的MySQL基础,或观看执行计划入门篇传送门: https://www.linuxidc.com/Linux/2019-03/157264.htm 终于总结到哦SQK执行计划的最后一个知识点了...: Extra Extra有以下几个值,它们都非常重要,它们表示你的SQL语句的最终性能,以下将介绍它的几种值,每个值都代表你的SQL语句的缺陷: 1.Using filesort 主要出现在 order...如: select test01 where a = '3' order by a; 执行结果: 如果没出现那就表明你这个SQL没毛病很显然上图我没出现,如果出现出现这个,说明你当前SQL语句需要“额外...(1,2,3) group by a; 我根据a查询,我又根据a分组,这样就不会出现Useing temporary,这里我也不放图了; 如果我非要让他Useing temporary出现也不难,就把sql...语句很显然,age在索引里面,但是name 不在索引里,这种情况就必须回原表,并且会显示Using where; SQL语句:EXPLAIN SELECT a,d FROM test01 where a

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL执行计划及优化策略

    ​ SQL执行计划 SQL执行计划是数据库管理系统在执行SQL语句前,对其查询过程进行分析并生成的一种内部表示,它详细描述了数据库如何执行SQL语句以及如何访问和检索数据的步骤。...通过查看SQL执行计划,可以了解SQL语句的执行效率,帮助我们优化查询性能。 执行计划主要包括以下几个关键部分: 1....例如,在Oracle中,可以使用`EXPLAIN PLAN`命令;在SQL Server中,可以使用`SET SHOWPLAN_ALL ON`或者图形化的Execution Plan工具;在MySQL中...理解并合理解读SQL执行计划对于SQL性能调优至关重要,可以帮助我们定位慢查询的原因,针对性地调整索引、改写SQL语句或者调整数据库参数,从而提高系统的整体性能。 优化SQL执行策略 1....每一种优化措施都需要结合实际业务场景和数据库环境来具体分析和实施,且在改动后务必再次查看新的执行计划,确认优化效果。同时,定期审查SQL性能报告也是持续优化数据库性能的重要环节。

    73310

    Explain 执行计划 和 SQL优化

    执行计划用来显示对应语句在MySQL中是如何执行的。 Explain语句对select,delete,update,insert,replace语句有效。...常见于主键或唯一索引扫描的多表链接操作中 system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。...其他数据库也叫做唯一索引扫描 NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引 possible_keys列 表示MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引...SQL 优化原则 尽可能消除全表扫描,除非表数据量是在万条一下 增加适当的索引能提高查询的速度,但增加索引需要遵循一定的基本规则: a....  #  慢查询文件存放位置 long_query_time= 2 #2秒以上的语句被记录 慢查询日志并不是只是记录的查出select 语句 ,dml 对数据语句都会记录 SQL 优化测试 创建一个有索引的表

    1K20

    轻松搞懂mysql的执行计划,再也不怕sql优化了

    近期要做一些sql优化的工作,虽然记得一些常用的sql 优化技巧,但是在工作中还是不够,所以需要借助工具的帮助,数据库的解释计划阐明了sql的执行过程,展示了执行的细节,我们只要根据数据库告诉我们的问题按图索骥的分析就好了...sql。...12、extra 常见的有下面几种 use filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行,如果是这个值,应该优化索引。...当查询只使用作为单一索引一部分的列时,可以使用该策略 use where:where子句用于限制哪一行 4、总结 sql 优化的原则就是在保证正确的情况下缩短时间,目标是确定的,通过目标进行回推可以知道想要执行的快就要尽可能的少读数据...看懂解释计划每个字段的就知道sql 的执行路径,结合自己的原则进行优化,祝你好运。

    1.4K30

    MySQL中SQL执行计划详解

    MySQL执行计划是sql语句经过查询优化器后,查询优化器会根据用户的sql语句所包含的字段和内容数量等统计信息,选择出一个执行效率最优(MySQL系统认为最优)的执行计划,然后根据执行计划,调用存储引擎提供的接口...但是,在MySQL执行的时候,到底使用了一个什么样的执行计划,有没有用到索引。当数据规模比较大的时候,sql执行的时候,执行计划不同,会直接影响sql的执行速度。...这个时候,就需要对sql语句执行进行调试。 MySQL我们在调试sql语句的时候,不会像我们写Java或者其他语言代码那样通过打断点的方式进行代码调试。...这个时候,我们就需要通过查看执行计划来调试我们的sql了。MySQL通过EXPLAIN来查看执行计划,我们写sql语句的时候,在语句之前加一个EXPLAIN就可以了。...包含mysql对于query优化的时候的一些附加信息。非常有用。

    4K20

    【SQL执行计划】优化器相关Hint

    ALL_ROWS 说明: ALL_ROWS是针对整个目标SQL的Hint,它的含义是让优化器启用CBO,而且在得到目标SQL的执行计划时会选择那些吞吐量最佳的执行路径。...FIRST_ROWS(n) 说明:FIRST_ROWS(n)是针对整个目标SQL的Hint,它的含义是让优化器启用CBO模式,而且在得到目标SQL的执行计划时会选择那些得以最快响应并返回头n条记录的执行路径...,也就是说在FIRST_ROWS(n) Hint生效的情况下,优化器会启用CBO,而且会依据返回头n条记录的响应时间来决定目标SQL的执行计划。...一是因为Oracle早就不支持RBO了,二是因为启用RBO后优化器在执行目标SQL时选择的执行路径将大大减少,很多执行路径RBO根本就不支持(比如哈希连接),这也就意味着启用RBO后目标SQL跑出正确执行计划的概率将大大降低...10g以来优化器模式的默认设置,即在默认情况下单独使用ALL_ROWS Hint和不使用任何Hint的效果是一样的 测试SQL-rule,具体如下: 注意执行计划中的关键字“rule based...”

    1.2K40

    怎样做YashanDB优化SQL语句执行计划

    SQL执行计划中冗余操作和资源分配不均可能导致明显的性能瓶颈。针对YashanDB这样的新兴数据库系统,合理配置和优化SQL语句执行将直接影响到企业的数据访问和处理效率。...优化器在生成执行计划时,会依据这些信息评估每个可能的执行路径,计算所需资源和时间,最终选择成本最低的执行路径。因此,确保准确实时的统计信息是优化SQL执行计划的首要前提。2....在执行计划中,优化器会优先选择能够有效利用索引来加速数据检索的路径。3. 编写高效的SQL语句SQL语句的编写技巧也直接影响执行计划的优化。...使用提示和执行计划优化YashanDB优化器支持使用HINTS提示来影响SQL执行计划的选择。...优化SQL语句结构,确保编写高效查询。灵活使用HINTS提高复杂查询的性能。持续监控和分析SQL执行计划和性能,依据数据变化和业务需求及时调整优化策略。

    15410

    深入解读SQL优化中的执行计划

    数据库的执行计划是SQL优化的最重要手段,执行计划怎么来的、包含什么内容、我们应该关注哪些点,这些是需要我们掌握的,基于这些知识再去理解SQL优化将更加容易。...在SQL前面加上Explain,就可以直接看到执行计划。不管是在pgadmin还是其它工具都可以简单进行查看。...那么这里也是为什么PG在和MySQL比的时候,说它的分析能力要强一点的原因,因为我们的Hash join支持非常好。另外现在MySQL已经支持Hash了,但是还不是那么完善。...最后看执行计划之外,从执行计划去反推SQL优化方向。从最底层一个扫描去入手,要尽量走索引扫描。另外索引扫描这里有很多方式,就是看它是否是合理索引,要看类型是不是选择合理的。...另外还需要减少不必要的索引、避免单条SQL插入,要单条变为批量进行插入。 前面说执行计划表连接类型是不是正确合理,另外要从SQL本身进行入手,我们目的是为了减少它的消耗。

    1.3K40

    Mysql SQL优化

    SQL优化规则 第一条: 尽量全值匹配,也就是说尽量使用等于 第二条: 最佳左前缀原则 如果是复合索引,要遵守最佳左前缀原则,指的是从最左侧列开始并且不跳过索引中的列 如果是按顺序使用的索引列,且有最左侧的列...中间有范围查询会导致后面的索引列全部失效,但是本身是有效的 第五条: 尽量使用覆盖索引 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select * 第六条: 尽量不使用不等于 mysql...pos from staffs where name like '%july%' 第九条: 字符串类型加引号 字符串不加单引号索引失效 解决方式:请加引号【捂脸】 第十条: OR改 UNION效率高 这个SQL...优化有诀窍 听着还挺带劲 最后附上习题一部,不发答案,大家自己瞅瞅,可以答案写评论区,我是全猜对了,你呢 ?...作者:彼岸舞 时间:2020\07\11 内容关于:Mysql 本文来源于网络,只做技术分享,一概不负任何责任

    1.3K31

    SQL优化案例-从执行计划定位SQL问题(三)

    当SQL出现问题,能从执行计划中快速的定位哪部分出现问题很重要,SQL文本如下(为保证客户隐私,已经将注释和文字部分去掉): SELECT /*+ index(i IDX_INVM_BEC)*/ RQ,...行数据,查看ID18谓词信息 18 - filter(("SJJGM"='1700' OR "JGM"='1700')) 从这部分再回到SQL文本寻找SQL代码是AND I.BRANCH_NO IN (...按照上面的分析思路看ID4里面的执行计划都很正确,但是返回结果184行记录且ID4和ID15做nested loop,导致整个view部分缓慢。...那么就很好办了,ID4和ID15应该走hash join,查看outline data信息,还没办法使用db_name信息引导执行计划走hash join,那么只能改写SQL。...由13分钟变为5秒钟执行完,看ID19还要执行999k次,查询ID18谓词信息对应SQL如下,确实是要返回999k行数据。

    57560

    MySQL——通过EXPLAIN分析SQL的执行计划

    在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。...rows: 扫描行的数量 filtered: 存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例(百分比) Extra: 执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息...MySQL5.6引入了**Index Condition Pushdown(ICP)**的特性,进一步优化了查询。Pushdown表示操作下放,某些情况下的条件过滤操作下放到存储引擎。...在5.6版本之后: MySQL使用了ICP来进一步优化查询,在检索的时候,把条件customer_id>=300 AND customer_id优化。

    80740

    MySQL——通过EXPLAIN分析SQL的执行计划

    在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。 ?...rows: 扫描行的数量 filtered: 存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例(百分比) Extra: 执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息...MySQL5.6引入了Index Condition Pushdown(ICP)的特性,进一步优化了查询。Pushdown表示操作下放,某些情况下的条件过滤操作下放到存储引擎。...在5.6版本之后: MySQL使用了ICP来进一步优化查询,在检索的时候,把条件 customer_id>=300AND customer_id优化。 ?

    98920

    从执行计划了解MySQL优化策略

    当我们编写一条SQL语句时,MySQL会自动对其进行优化,并生成最优的执行计划以实现更快的查询速度。 各位精通MySQL的大佬们,像往常一样,我们经常会遇见一堆SQL查询要处理。...使用它,并结合我们自己的经验和智慧,我们就可以像成功解锁小学奥数一样地优化SQL查询,成为MySQL中的一名优秀演员。...废话不多说,现在就让我们开始吧,让我们去通过熟悉每个查询的执行过程,并用一颗豁达的心态理解每个SQL查询的优化分析! 本文将介绍MySQL执行计划的相关知识。...查询优化可以看作是一个搜索空间的问题,其中搜索空间包括所有可能的执行计划。 以下是MySQL优化器确定执行计划的一般流程: 解析SQL语句并构造语法树。...性能优化 根据查询执行计划,我们可以判断是否有性能瓶颈,需要对 SQL 查询语句进行优化。

    46210

    Mysql慢sql优化

    Mysql慢sql优化 index 1.MySQL的执行过程 2.索引的定义 3.MySQL执行计划explain or desc 4.索引使用/创建规则 5.弊端 6.设计规范 7.SQL建议 1...MySQL 的执行过程 2.索引的定义 3.MySQL执行计划 explain or desc 3.MySQL执行计划 使用 explain 了解并优化执行计划,非常重要; 执行计划的 id select...直接显示表名或者表的别名 由 ID 为 M,N 查询 union 产生的结果 由 ID 为 N 查询产生的结果 执行计划的 type  访问类型,SQL 查询优化中一个很重要的指标...Select tables optimized away:基于索引优化 MIN/MAX 操作或者 MyISAM 存储引擎优化 COUNT(*) 操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即可完成优化...优化表的数据类型,选择合适的数据类型: 原则:更小通常更好,简单就好,所有字段都得有默认值,尽量避免null。

    72910

    MySQL-sql优化

    插入数据 insert优化 批量插入 insert into tb_users values (1,'cat'),(2,'mouse'),(3,'bird'); 手动提交事务 因为MySQL中默认的事务提交方式为自动提交...首先在登入MySQL需要允许其访问本地文件 mysql --local-infile -u root -p //连接远程服务器时,加上参数 然后将全局参数设置为1(可以理解为一个从本地加载文件的开关)...而当页中删除的记录达到MERGE_THRESHOLD(默认页的50%),InnoDB就会开始寻找该页的前后是否有合适的页能够进行合并,以优化MySQL的储存空间。...limit优化 假如,有一张1000万数据量的表,我想通过分页查询找到第500,0000条数据后面的十条数据,那么意味着MySQL要对500,0010条数据进行排序,然后只返回十条数据。...通常情况下,会使用覆盖索引,以及子查询的方式进行limit的优化。

    11510

    Mysql学习-sql优化

    选择优化的数据类型 1)更小的通常更好:一般情况下,尽量使用可以正确存储数据的最小数据类型。...因为如果查询中包含可为NULL的列,对于Mysql来说更难优化。...Mysql索引 Mysql索引为什么会采用B+Tree,需要考虑以下几个问题: 对具体的数据可以快速搜索、如何快速查找区间数据、支持模糊查询、支持分页、支持排序(正序和逆序)。...对于sql的优化: 1.通常如果查询中带有or的join时,可以考虑将其变成两个确切的sql进行UNION ALL,此时执行的效率比采用or要高得多。 2....对于多个 join 可以考虑将其分解成多个sql子句,在程序中拼接,此时的效率比join的效率要高。 4. 采用sql的执行计划,对查询慢的sql子句进行优化。 5. 考虑采用延迟关联。

    87510
    领券