首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

性能优化-通过explain查询分析SQL执行计划

7、通过explain查询分析SQL执行计划 1、使用explain查询SQL执行计划 SQL执行计划侧面反映出了SQL执行效率,具体执行方式如下所示:在执行SQL前面加上explain关键词即可...且只有一个 C:unionunion连接两个select查询,第一个查询是dervied派生表,除了第一个表外,第二个以后表select_type都是union D:dependent union...G:unique_subquery:用于wherein形式子查询,子查询返回不重复唯一 H:index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复...关键字 B:no tables used:不带from字句查询或者From dual查询 C:使用not in()形式子查询或not exists运算符连接查询,这种叫做反连接。...,该信息表示是处理结果获取交集 using union:表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using sort_union和using sort_intersection

1.4K10

MySQL优化20招

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

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

SQL优化 20连问

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

63340

SQL优化 21 连击

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

675110

SQL优化 21 连击 + 思维导图

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

79320

MySQL优化20招

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

58310

21招SQL优化!

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

49310

SQL查询高级应用

一、 简单查询 简单Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询表或视图、以及搜索条件等。...在使用UNION 运算符时,应保证每个联合查询语句选择列表中有相同数量表达式,并且每个查询选择表达式应具有相同数据类型,或是可以自动将它们转换为相同数据类型。...内连接查询操作列出与连接条件匹配数据行,它使用比较运算符比较被连接。...内连接分三种: 1、等值连接: 在连接条件中使用等于号(=)运算符比较被连接,其查询结果列出被连接所有列,包括其中重复列。...3、自然连接: 在连接条件中使用等于(=)运算符比较被连接,但它使用选择列表指出查询结果集合中所包括列,并删除连接重复列。

2.9K30

SQL优化 21 连击 + 思维导图

二、避免在where子句中使用 or 来连接条件 1、反例 SELECT * FROM user WHERE id=1 OR salary=5000 2、正例 (1)使用union all SELECT...十九、使用explain分析你SQL执行计划 1、type system:表仅有一行,基本用不到; const:表最多一行数据配合,主键查询时触发较多; eq_ref:对于每个来自于前面的表行组合,该表读取一行...这可能是最好联接类型,除了const类型; ref:对于每个来自于前面的表行组合,所有有匹配索引行将从这张表读取; range:只检索给定范围行,使用一个索引来选择行。...除非你专门索取或检查所有行,如果Extra不为Using where并且表联接类型为ALL或index,查询可能会有一些错误。需要回表查询。...这样不带任何条件count会引起全表扫描,并且没有任何业务意义,是一定要杜绝

28841

Navicat Premium 技巧介绍 + MySQL性能分析

3.2.看 sql 执行计划,就是此 sql 在执行过程,有没有用到索引 等等 EXPLAIN SELECT * FROM `user` WHERE id =1126; ?...type 联合查询所使用类型. type显示是访问类型,是较为重要一个指标,结果好到坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null...G:unique_subquery:用于wherein形式子查询,子查询返回不重复唯一 H:index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复...,该信息表示是处理结果获取交集 using union:表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using sort_union和using sort_intersection...type=ref,因为这时认为是多个匹配行,在联合查询,一般为REF。 3.3 看 sql 概况,看此sql 执行过程,各个过程耗时比例 ?

4.7K20

mysql慢查询日志

,通常type是const,其他数据库也叫做唯一索引扫描 eq_ref: 出现在要连接多个表查询计划,驱动表循环获取数据,这行数据是第二个表主键或者唯一索引,作为条件查询只返回*一条数据*,且必须为...,优先选择使用全文索引 ft_idx_t1_nickname_remark ref_or_null: 与ref方法类似,只是增加了null比较,实际用不多 unique_subquery: 用于where...,如果是条件,使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func // rows 这里是执行计划估算扫描行数,不是精确 // extra no tables used:...不带from字句查询或者from dual查询 NULL: 查询列未被索引覆盖,并且where筛选条件是索引前导列(where条件字段复合索引连续连起来索引),意味着用到了索引,但是部分字段未被索引覆盖...using intersect: 表示使用and各个索引条件时,该信息表示处理结果获取交集 using union: 表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using

70320

explain属性详解与提速百倍优化示例

在MySQL,可以通过EXPLAIN命令获取MySQL如何执行SELECT语句信息,包括在SELECT语句执行过程中表如何连接连接顺序。...ref_or_null:与ref方法类似,只是增加了null比较。实际用不多。 unique_subquery:用于wherein形式子查询,子查询返回不重复唯一。...using_union:表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using intersect:表示使用and各个索引条件时,该信息表示是处理结果获取交集 using...where条件单表查,锁定最小返回记录表——把查询语句where都应用到表返回记录数最小表开始查起,单表每个字段分别查询,看哪个字段区分度最高 explain查看执行计划,是否锁定记录较少表开始查询...order by limit 形式sql语句让排序表优先查 了解业务方使用场景 加索引时参照建索引几大原则 观察结果,不符合预期继续0分析 不同SQL语句书写方式对于效率往往有本质差别,这要求我们对

1.3K30

深入理解SQL四种连接-左外连接、右外连接、内连接、全连接

如果左表某行在右表没有匹配行,则在相关联结果集行右表所有选择列表列均为空。       ...当某行在另一个表没有匹配行时,则另一个表选择列表列包含空。如果表之间有匹配行,则整个结果集行包含基表数据。   ...自然连接无需指定连接列,SQL会检查两个表是否相同名称列,且假设他们在连接条件中使用,并且在连接条件仅包含一个连接列。...第一、单表查询:根据WHERE条件过滤表记录,形成中间表(这个中间表对用户是不可见);然后根据SELECT选择选择相应列进行返回最终结果。...八、总结 连接查询是SQL查询核心,连接查询连接类型选择依据实际需求。如果选择不当,非但不能提高查询效率,反而会带来一些逻辑错误或者性能低下。

5.6K10

数据库优化方案之SQL脚本优化

且只有一个 C:union:union连接两个select查询,第一个查询是dervied派生表,除了第一个表外,第二个以后表select_type都是union D:dependent union...no tables used:不带from字句查询或者From dual查询 C:使用not in()形式子查询或not exists运算符连接查询,这种叫做反连接。...,该信息表示是处理结果获取交集 using union:表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using sort_union和using sort_intersection...0,确保表num列没有null,然后这样查询: select id from t where num=0 4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描...因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量还是未知,因而无法作为索引选择输入项。

1.4K30

Java企业面试——数据库

自然连接无需指定连接列,SQL会检查两个表是否相同名称列,且假设他们在连接条件中使用,并且在连接条件仅包含一个连接列。...第一、 单表查询:根据WHERE条件过滤表记录,形成中间表(这个中间表对用户是不可见);然后根据SELECT选择选择相应列进行返回最终结果。...八、总结 连接查询是SQL查询核心,连接查询连接类型选择依据实际需求。如果选择不当,非但不能提高查询效率,反而会带来一些逻辑错误或者性能低下。...l 选择第21到40条记录存在两种方法,一种是上面例子展示在查询第二层通过ROWNUM <= 40来控制最大,在查询最外层控制最小。...指定上查询开始记录数和结束记录条件。 l 蓝色部分:指定记录第几条开始到第几条结束,取出棕色部门来作为查询条件变量 总结:绝大多数情况下,第一个查询效率比第二个高得多。

1.5K40

数据库优化 6. 启用MySQL查询缓存

`deleted` = 0;   查询结果: explain结果来看,整个语句索引设计是没有问题, 下面来看看这几个字段你含义: id 我理解是SQL执行顺序标识,SQL大到小执行...UNION(UNION第二个或后面的SELECT语句) (4) DEPENDENT UNION(UNION第二个或后面的SELECT语句,取决于外面的查询) (5) UNION RESULT(UNION...index: Full Index Scan,index与ALL区别为index类型只遍历索引树 range:只检索给定范围行,使用一个索引来选择行 ref: 表示上述表连接匹配条件,即哪些列或常量被用于查找索引列上...) 不损失精确性情况下,长度越短越好 ref 表示上述表连接匹配条件,即哪些列或常量被用于查找索引列上 rows 表示MySQL根据表统计信息及索引选用情况,估算找到所需记录所需要读取行数...“文件排序” Using join buffer:改强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。

2.1K30

mysql索引及优化

创建索引时,你需要确保该索引是应用在 SQL 查询语句条件(一般作为 WHERE 子句条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表记录。...) 平时用SQL查询语句一般都有比较多限制条件,所以为了进一步榨取MySQL效率,就要考虑建立组合索引。...rows:这里是执行计划估算扫描行数,不是精确。...using_union:表示使用or连接各个使用索引条件时,该信息表示处理结果获取并集 using intersect:表示使用and各个索引条件时,该信息表示是处理结果获取交集 using...最前面不能使用%和_这样变化 如果条件中有or,即使其中有条件带索引也不会使用,对于索引字段推荐使用union替换or。 索引不会包含有NULL列 使用短索引。

77720

Java面试手册:数据库 ④

触发器可以查询其他表,而且可以包含复杂SQL语句他们主要用于强制服从复杂业务规则或要求。 触发器是与表相关数据库对象,在满足定义条件时触发,并执行触发器定义语句集合。...; 删除触发器: drop trigger 触发器名字; 视图 创建一张虚拟表:少执行SQL语句,因为在和java连接时候,每执行一条语句就会连接JDBC接口,消耗资源。...,类型不必完全相同,但必须是DBMS可以隐含转换类型(例如不同数值类型,不同日期类型) union使用场景 在一个查询从不同表返回结构数据 union只会选取结果不同union all...会选择选取重复 对一个表执行多个查询,按一个查询返回数据 union使用语法 : select column_name(s) from table1 union select column_name...子查询 只能查询单个列 子查询不能使用order by 使用子查询来查找不确定 主要用于where语句和having语句 组合查询 union 去重合并 union all 合并 intersect

1.3K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券