原始SQL: select a2.ISSUE_CODE as ISSUE_CODE, a2.FZQDM as FZQDM, a2.FZQLB as FZQLB, a2.FJJDM as FJJDM, a3.FSETCODE as FSETCODE, a3.FSETID as FSETID, a2.SRSCD as SRSCD from (select t1.FSCDM as ISSUE_CODE,--市场代码 t1.FZQDM as FZQDM, (case when instr(t1.FZQL…
    最近在给一个客户做调优的时候发现一个很有意思的现象,对于一个复杂查询(涉及12个表)建立必要的索引后,语句使用的IO急剧下降,但执行时间不降反升,由原来的8秒升到20秒.     通过观察执行计划,发现之前的执行计划在很多大表连接的部分使用了Hash Join,由于涉及的表中数据众多,因此查询优化器选择使用并行执行,速度较快.而我们优化完的执行计划由于索引的存在,且表内数据非常大,过滤条件的值在一个很宽的统计信息步长范围内,导致估计行数出现较大偏差(过滤条件实际为15000行,步长内估计…
执行语句 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name; 结果,红色字体为我添加的注释 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name; OK ABSTRACT SYNTAX TREE: (T…
执行语句 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name; 结果,红色字体为我添加的注释 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name; OK ABSTRACT SYNTAX TREE: (T…
后面的练习中需要下载 Demo 数据库, 有很多不同的版本, 可以根据个人需要下载.  下载地址 -http://msftdbprodsamples.codeplex.com/ 1. 什么是执行计划 查询优化器对输入的 T-SQL 查询语句通过"计算"而选择出效率最高的一种执行方案,这个执行方案就是执行计划. 执行计划可以告诉你这个查询将会被如何执行或者已经被如何执行过,可以通过执行计划看到 SQL 代码中那些效率比较低的地方. 查看执行计划的方式我们可以通过图形化的界面,或者文本,或…
前面两章花了不少篇幅介绍了SparkSQL的执行过程,非常多读者还是认为当中的概念非常抽象.比方Unresolved LogicPlan.LogicPlan.PhysicalPlan是长得什么样子,没点印象.仅仅知道名词,感觉非常缥缈. 本章就着重介绍一个工具hive/console,来加深读者对sparkSQL的执行计划的理解. 1:hive/console安装       sparkSQL从1.0.0開始提供了一个sparkSQL的调试工具hive/console. 该工具是给开发人员使用,…
简介 我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询优化(Optimization,有时候也被称为简化).执行(Execution).除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果.但查询优化器不是本篇的重点,本篇文章主要讲述查询优化器在生成执行计划之…
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题. 看懂执行计划也就成了SQL优化的先决条件. 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题. 一.         查看执行计划的三种方法 1.1 设置autotrace 序号 命令 解释 1 SET AUTOTRACE OFF 此为默认值,即关闭Auto…
SQL Server 其实从SQL Server 2005开始,也提供了类似ORACLE中固定执行计划的功能,只是好像很少人使用这个功能.当然在SQL Server中不叫"固定执行计划"这个概念,而是叫"执行计划指南"(Plan Guide 很多翻译是计划指南,个人觉得执行计划指南稍好一些).当然两者虽然概念与命名不同,实质上它们所说的是相同的事情,当然商业包装是很常见的事情.个人还是觉得"固定执行计划"这个概念叫起来顺口,通俗易懂,执行计划指南…
前言 这里采用了tpc-h一个数据库的数据量来进行查询计划的对比.并借助tpc-h中的22条查询语句进行执行计划分析. mysql采用的是标准安装,TiDB采用的是单机测试版,这里的性能结果不能说明其性能差异 本文章主要目的是对比Mysql与TiDB在执行sql查询时的差异. mysql版本5.7   TiDB版本v2.0.0-rc.4 准备阶段 数据导入TiDB后是缺少统计信息的: SHOW STATS_META 可以手工进行统计信息的刷新 ANALYZE TABLE nation,regio…