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

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

:与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响 E:union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询...L:all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。...7)、key_len 用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去...留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。...I:using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。

1.4K10

2019Java面试宝典 -- 数据库常见面试题

1、union和union all的区别? 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。...union(或称为联合)的作用是将多个结果合并在一起显示出来。...两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);union和union all的区别是,union会自动去重,而union all则将所有的结果全部显示出来,不管是不是重复。...Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All:对两个结果集进行并集操作,包括重复行,不进行排序; select * from Table1 union...SQL Server: 在分页查询上,我感觉SQL Server比较费劲,没有一个专门的分页的语句,并且每个版本对应的查询方式不一样,下面例子是每页10条,取第31-40条数据:   --方法一:Order

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

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

    :与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响 E:union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询...如果是尖括号括起来的union M,N>,与类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。...L:all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。 possible_keys 指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。...留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。...I:using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。

    5K21

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

    union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询,所以id字段为null。...如果是单列索引,那就返回整个索引长度;如果是多列索引,那么查询不一定都能使用到所有的列,返回具体使用索引的长度(没有使用到的列,这里不会计算进去)。...对比这个数值和多列索引的总长度,就可以推测是否使用到所有的列。 mysql的ICP特性使用到的索引不会计入其中。...using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。...如果原语句中没有distinct不需要去重,就可以直接使用union all了,因为使用union需要去重的动作,会影响SQL性能。

    1.3K30

    初学者SQL语句介绍

    然而,检索表中的所有列是低效的。因此,因该只检索需要的字段,这样可以大大的提高查询的效率。    ...合并查询     合并查询( Union Query )用于合并具有相同字段结构的两个表的内容,如果想在一个结果集中显示多个记录源中的不相关的记录时,这十分有用。    ...注意:缺省情况下,合并查询不会返回重复记录(如果记录归档系统在把记录拷到归档表中后不将相应的记录删除,这时该功能就有用了),可以加上 All 关键字而让合并查询显示重复记录。    ...例子:     Select *     From students     Union All     Select *     From students1     该合并查询显示 students...在 SQL Server 中,可以使用两种连接语法形式,一种是 Ansi 连接语法形式,这是连接用在 From 子句中,另外一种是 SQL Server 连接语句形式,这是连接用在 Where 子句中。

    1.7K30

    详解SQL集合运算

    2.UNION ALL集合运算 (1)假设Query1返回m行,Query2返回n行,则Query1 UNION ALL Query2返回(m+n)行; (2)UNION ALL 不会删除重复行,所以它的结果就是多集...3.INTERSECT ALL集合运算 (1)ANSI SQL支持带有ALL选项的INTERSECT集合运算,但SQL Server2008现在还没有实现这种运算。...3.EXCEPT ALL集合运算 (1)ANSI SQL支持带有ALL选项的EXCEPT集合运算,但SQL Server2008现在还没有实现这种运算。...50行,会把cutid=NULL,empid=1的行过滤掉 用方案二查询出来结果为51行,不会把cutid=NULL,empid=1的行过滤掉 用下面的方案可以解决上面的问题,需要处理cutid=NULL...6行,不会把cutid=NULL,empid=1的行过滤掉 用方案二查询出来结果为5行,会把cutid=NULL,empid=1的行过滤掉 用下面的方案可以解决上面的问题,需要处理cutid=NULL,

    2.3K80

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

    :与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响 E:union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询...L:all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。...留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。...I:using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。...12.不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样

    1.4K30

    详解 MySQL 执行计划 -- Explain

    在 5.7 以前的版本中,想要显示 partitions 需要使用 explain partitions 命令,想要显示 filtered 需要使用 explain extended命令 在5.7版本后...3.5.7. index 扫描整个索引树,在索引上全表扫描,通常应该避免,但他比最后要介绍的 all 性能要好一些,因为: 扫描过程不需要访问磁盘,只需要对内存中的索引树进行扫描 索引本身带有排序,因此不需要在扫描后进行额外的排序工作...3.5.8. all 对全表所有行进行扫描,通常性能非常差,需要尽量避免。...,包括 SQL 中直接指定的值或其他子查询或 union 查询返回的数据 3.10. rows 该字段算是 explain 返回结果中最为重要的一个字段了,他展示了优化器评估的将要读取的行数。...3.11. filtered filtered 字段是一个百分比,如果有子查询或 union 查询存在,那么这个值就是他所依赖的前一个表与当前表连接的行数占所有需要读取的行数(rows 值)的比例。

    91911

    mysql慢查询日志

    派生表,除第一个表外,第二个以后的表select_type都是union union result: 包含union的结果集,在union和union all语句中,因此它不需要参与查询,所有id字段为...null dependent union: 与union一样,出现在union或union all语句中,但是这个查询要受到外部查询的影响,比如where in subquery: 除了from字句中包含的子查询外...N就是执行计划中的id,表示结果来自于这个查询产生.如果是尖括号括起来的union M,N>,与类似,也是一个临时表,表示这个结果来自于union查询的id为M,N结果集 //...: 索引全表扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询,换句话说,所有的数据就在索引里,不需要回表 all: 这个就是全表扫描数据文件...另外,key_len只计算where条件用到的长度,而排序和分组就算用到了索引,也不会计算到key_len中 // ref 如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段

    74820

    SQL 基础学习参考资料分享

    Examples: (MS) 表示: MySQL 和 SQL Server 数据库通常情况下 (M*S) 表示 : MySQL 的某些特定情况以及 SQL Server 的一般情况 参考语法、注入技巧...FROM news UNION ALL SELECT name COLLATE SQL_Latin1_General_Cp1254_CS_AS FROM members MySQL (M) Hex()...跟 UNION 相关的数据类型 提示 1、使用 union 查询时,最好使用 union 和 all 的搭配 2、如果不显示左表的内容需要把左 SQL 设为假,可以是 -1 或者不存在的条件 3、在 union...FROM test.test t LIMIT 0,0 UNION ALL SELECT 1,'x'/*,10 ; 关掉 SQL Server (S) 当你真的要关闭时使用:';shutdown --...盲注 通过页面的显示状态来判断 SQL 语句的执行结果是 TRUE 还是 FLASE 来获取数据库中的数据 TRUE : SELECT ID, Username, Email FROM [User]WHERE

    1.1K20

    Java 程序员常犯的 10 个 SQL 错误

    只让数据库来做处理然后只把结果带到Java内存中吧。因为毕竟所有非常聪明的家伙已经对这些昂贵的产品进行了优 化。因此实际上,通过将OLAP移到数据库,你将获得一下两项好处: 便利性。...3、使用UNION 代替UNION ALL UNION ALL(允许重复) UNION (去除了重复) 移除重复行不仅很少需要(有时甚至是错的),而且对于带很多行的大数据集合会相当慢,因为两个子select...注意即使SQL标准规定了INTERSECT ALL和EXCEPT ALL,很少数据库会实现这些没用的集合操作符。 解决方法: 每次写UNION语句时,考虑实际上是否需要UNION ALL语句。...6、在一个临时的笛卡尔积集合中使用 DISTINCT 或 UNION 消除重复项 通过复杂的连接,人们可能会对SQL语句中扮演关键角色的所有关系失去概念。...窗口函数能够在结果集上聚合数据,但是却没有分组。事实上,每个窗口函数都有自己的、独立的PARTITION BY语句,这个工具对于显示报告太好了。

    1.5K20

    程序员在写 SQL 时常犯的10个错误

    只让数据库来做处理然后只把结果带到Java内存中吧。因为毕竟所有非常聪明的家伙已经对这些昂贵的产品进行了优 化。因此实际上,通过将OLAP移到数据库,你将获得一下两项好处: 便利性。...3、使用UNION 代替UNION ALL UNION ALL(允许重复) UNION (去除了重复) 移除重复行不仅很少需要(有时甚至是错的),而且对于带很多行的大数据集合会相当慢,因为两个子select...注意即使SQL标准规定了INTERSECT ALL和EXCEPT ALL,很少数据库会实现这些没用的集合操作符。 解决方法: 每次写UNION语句时,考虑实际上是否需要UNION ALL语句。...6、在一个临时的笛卡尔积集合中使用 DISTINCT 或 UNION 消除重复项 通过复杂的连接,人们可能会对SQL语句中扮演关键角色的所有关系失去概念。...窗口函数能够在结果集上聚合数据,但是却没有分组。事实上,每个窗口函数都有自己的、独立的PARTITION BY语句,这个工具对于显示报告太好了。

    15610

    mysql索引及优化

    创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。...dependent union:与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响 union result:包含union的结果集,在union和union...all语句中,因为它不需要参与查询,所以id字段为null。...all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。 possible_keys:查询可能使用到的索引都会在这里列出来。...using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。

    79520

    快来看看你是不是“假的”DBA

    MySQL 在执行 SQL 语句的过程中,通常会临时创建一些存储中间结果集的表,临时表只对当前连接可见,在连接关闭时,临时表会被删除并释放所有表空间。...MySQL 会在下面这几种情况产生临时表 使用 UNION 查询:UNION 有两种,一种是UNION ,一种是 UNION ALL ,它们都用于联合查询;区别是 使用 UNION 会去掉两个表中的重复数据...使用 UNION ALL,则不会排重,返回所有的行。使用 UNION 查询会产生临时表; 使用 TEMPTABLE 算法或者是 UNION 查询中的视图。...使用 UNION 和 UNION ALL 的注意事项: 通过 union 连接的 SQL 分别单独取出的列数必须相同 使用 union 时,多个相等的行将会被合并,由于合并比较耗时,一般不直接使用 union...进行合并,而是通常采用 union all 进行合并 1 谈谈 SQL 优化的经验  查询语句无论是使用哪种判断条件 等于、小于、大于, WHERE 左侧的条件查询字段不要使用函数或者表达式; 使用

    78450

    这个MySQL优化原理剖析,比照X光还清楚

    Server层主要包含连接器、检索内存、分析器、优化器、执行器等,所有跨存储引擎的功能均于这一层构建,例如存储过程、触发器、视图,函数等,有一个标准化的binglog日志模块。...在存储引擎级别实现的锁,例如InnoDB的行锁,并不会体现在线程状态中。...执行计划:MySQL不会生成查询字节码来执行查询,MySQL生成查询的一棵指令树,然后通过存储引擎执行完成这棵指令树并返回结果。最终的执行计划包含了重构查询的全部信息。...9. rows 表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数,这个不是结果集里的行数。 10....Using join buffer:改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。

    70240

    MySQL数据库:explain执行计划详解

    通过explain关键字知道MySQL是如何执行SQL查询语句的,分析select 语句的性能瓶颈,从而改进我们的查询,explain的结果如下: 下面是有关各列的详细介绍,重要的有id、type、...explain select * from t3 where id=3952602 union all select * from t3; (6)union result:从union表获取结果的select...id,表示结果来自于这个查询产生; (4)如果是尖括号括起来的 union M,N>,与类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。...一般要求type为ref,范围查找需要达到 range。 (1)system:表中只有一条元组匹配(等于系统表),这是 const 类型的特例,平时不会出现,可以忽略不计。...(3)eq_ref:主键或者唯一索引中的所有字段被用于连接使用,只会返回一行匹配的数据。简单的select查询语句不会出现这种情况。 (4)ref:普通索引扫描,可能返回多个符合查询条件的行。

    1.1K20

    Java 程序员常犯的 10 个 SQL 错误!

    只让数据库来做处理然后只把结果带到Java内存中吧。因为毕竟所有非常聪明的家伙已经对这些昂贵的产品进行了优 化。因此实际上,通过将OLAP移到数据库,你将获得一下两项好处: 便利性。...3、使用UNION 代替UNION ALL UNION ALL(允许重复) UNION (去除了重复) 移除重复行不仅很少需要(有时甚至是错的),而且对于带很多行的大数据集合会相当慢,因为两个子select...注意即使SQL标准规定了INTERSECT ALL和EXCEPT ALL,很少数据库会实现这些没用的集合操作符。 解决方法: 每次写UNION语句时,考虑实际上是否需要UNION ALL语句。...6、在一个临时的笛卡尔积集合中使用 DISTINCT 或 UNION 消除重复项 通过复杂的连接,人们可能会对SQL语句中扮演关键角色的所有关系失去概念。...窗口函数能够在结果集上聚合数据,但是却没有分组。事实上,每个窗口函数都有自己的、独立的PARTITION BY语句,这个工具对于显示报告太好了。

    1.2K20
    领券