精华内容
下载资源
问答
  • mysql执行计划怎么看

    2016-04-01 17:26:05
    转载 ...将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息   ...

    转载

    Explain语法

    EXPLAIN  SELECT ……
    变体:
    1. EXPLAIN EXTENDED SELECT ……
    将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 
    2. EXPLAIN PARTITIONS SELECT ……
    用于分区表的EXPLAIN

    执行计划包含的信息

     

    id

    包含一组数字,表示查询中执行select子句或操作表的顺序

     

    id相同,执行顺序由上至下

     

    如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

     

    id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行

     

    select_type 

    表示查询中每个select子句的类型(简单 OR复杂)
     

    a.SIMPLE:查询中不包含子查询或者UNION
    b.查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY
    c.在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY
    d.在FROM列表中包含的子查询被标记为:DERIVED(衍生)
    e.若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在  FROM子句的子查询中,外层SELECT将被标记为:DERIVED
    f.从UNION表获取结果的SELECT被标记为:UNION RESULT
     

    type

     
    表示MySQL在表中找到所需行的方式,又称“访问类型”,常见类型如下:
     

    由左至右,由最差到最好
     
    a.ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
     

    b.index:Full Index Scan,index与ALL区别为index类型只遍历索引树
     

    c.range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于between、<、>等的查询

     

    range访问类型的不同形式的索引访问性能差异

     

    d.ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找
     

     

     

     
    e.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描

     
    f.const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量

    system是const类型的特例,当查询的表只有一行的情况下, 使用system
     
     
    g.NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引
     

     

    possible_keys

     
    指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
     

    key

    显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
    TIPS:查询中若使用了覆盖索引,则该索引仅出现在key列表中

     

    key_len

    表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

     

    key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的
     

    ref

    表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
     

    本例中,由key_len可知t1表的idx_col1_col2被充分使用,col1匹配t2表的col1,col2匹配了一个常量,即 ’ac’
     
     
    rows
    表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数
     

     

    Extra

    包含不适合在其他列中显示但十分重要的额外信息
     
    a.Using index
     
    该值表示相应的select操作中使用了覆盖索引(Covering Index)
     

     

    TIPS:覆盖索引(Covering Index)
     
    MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件
     
    包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index)
     
    注意:
    如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降
     
    b.Using where
     
    表示MySQL服务器在存储引擎受到记录后进行“后过滤”(Post-filter),
    如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集
     

     

    c.Using temporary
     
    表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
     

     

    d.Using filesort
     
    MySQL中无法利用索引完成的排序操作称为“文件排序”
     

     

     

     

     

    MySQL执行计划的局限

     
    •EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况
    •EXPLAIN不考虑各种Cache
    •EXPLAIN不能显示MySQL在执行查询时所作的优化工作
    •部分统计信息是估算的,并非精确值
    •EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划mysql
    展开全文
  • sqlplus的autotrace是分析sql的执行计划,执行效率的一个非常简单方便的工具,在绝大多数情况下,也是非常有用的工具。1。如何设置和使用autotracesql> connect / as sysdbasql> @?/rdbms/admin/utlxplan.sql...

    sqlplus的autotrace是分析sql的执行计划,执行效率的一个非常简单方便的工具,在绝大多数情况下,也是非常有用的工具。

    1。如何设置和使用autotrace

    sql> connect / as sysdba

    sql> @?/rdbms/admin/utlxplan.sql

    table created.

    sql> create public synonym plan_table for plan_table;

    synonym created.

    sql> grant select,update,insert,delete on plan_table to public;

    grant succeeded.

    sql> @?/sqlplus/admin/plustrce.sql

    sql>grant plustrace to public.

    2. 理解和使用autotrace

    对于sql 调整,使用autotrace是最简单的方法了,我们只需要做:

    sql>set autotrace on

    我们就可以看到我们sql的执行计划,执行成本(physical read/consistent read…)

    加上set timing on或者set time on,我们可以得到很多我们需要的数据。

    然后在toad里面对某一条sql语句按下ctrl+e就可以看到这条语句的执行计划了。

    展开全文
  • --5、下面看一下3个表的情况下,RBO如何选择驱动表 --*************************************************************************** --********************************...或者请教下怎么看此语句哪个是驱动表谢谢
  • ![图片说明](https://img-ask.csdn.net/upload/201607/07/1467887256_832544.png) 上图的 时间消耗 怎么换算成时分秒,cpu消耗怎么能显示成消耗总的百分之几的样式
  • 执行计划的各列的涵义 序号 列名 解释 1 ID_PLUS_EXP 每一步骤的行号 2 PARENT_ID_...
    
    

    方法一

    一、启用Autotrace功能。
    任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,否则可能报错。

    1、报错示例:

    SQL :> set autotrace on;
    SP2-0613: Unable to verify PLAN_TABLE format or existence
    SP2-0611: Error enabling EXPLAIN report
    SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
    SP2-0611: Error enabling STATISTICS report

    *******************************************************************************

    SQL> set autotrace on;

    SP2-0613: 无法验证 PLAN_TABLE 格式或实体

    SP2-0611: 启用EXPLAIN报告时出现错误

    SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色

    SP2-0611: 启用STATISTICS报告时出现错误

    该错误的的主要原因是由于当前用户下没有PLAN_TABLE这张表及相应的PLUSTRACE角色权限。

    2、解决方法:

    A.以SYS用户登录:

    oracle>sqlplus '/ as sysdba';

    B.运行utlxplan.sql(rdbms/admin脚本创建 PLAN_TABLE

    SQL>@ D:oracleora81RDBMSADMINutlxplan.sql

    C.通过执行 plustrce.sql(ORACLE_HOME/sqlplus/admin/plustrce.sql)脚本创建 plustrace 角色,这将V$ 视图上的选择权限授予该角色,也将 plustrace 角色授予DBA  色,脚本部份内容如下:

    drop role plustrace;
    create role plustrace;
    grant select on v_$sesstat to plustrace;
    grant select on v_$statname to plustrace;
    grant select on v_$session to plustrace;
    grant plustrace to dba with admin option;
    


    D.将 plustrace 角色授予当前用户( DBA 角色的用户)

    二、设置Autotrace的命令。

    序号

    命令

    解释

    1

    SET AUTOTRACE OFF

    此为默认值,即关闭Autotrace

    2

    SET AUTOTRACE ON

    产生结果集和解释计划并列出统计

    3

    SET AUTOTRACE ON EXPLAIN

    显示结果集和解释计划不显示统计

    4

    SETAUTOTRACE TRACEONLY

    显示解释计划和统计,尽管执行该语句但您将看不到结果集

    5

    SET AUTOTRACE

    TRACEONLY STATISTICS

    只显示统计

    EgSET AUTOTRACE ON, set timing on, alter session set time_statistics=true;

    三、Autotrace执行计划的各列的涵义

    序号

    列名

    解释

    1

    ID_PLUS_EXP

    每一步骤的行号

    2

    PARENT_ID_PLUS_EXP

    每一步的Parent的级别号

    3

    PLAN_PLUS_EXP

    实际的每步

    4

    OBJECT_NODE_PLUS_EXP

    Dblink或并行查询时才会用到

    四、AUTOTRACE Statistics常用列解释

    序号

    列名

    解释

    1

    db block gets

    buffer cache中读取的block的数量

    2

    consistent gets

    buffer cache中读取的undo数据的block的数量

    3

    physical reads

    从磁盘读取的block的数量

    4

    redo size

    DML生成的redo的大小

    5

    sorts (memory)

    在内存执行的排序量

    7

    sorts (disk)

    在磁盘上执行的排序量




    以下是测试案例:

    SQL> SELECT /*+ parallel(8)   */ dt.TIMEMARK "#TIMEMARK",dt.GRIDX "#GRIDX",dt.GRIDY "#GRIDY",dt.CGI "#CGI",
      2  sum(MRTotal) MRTotal
    ,sum(MOCMRCount) MOCMRCount
    ,sum(MTCMRCount) MTCMRCount
    ,sum(MRTotal)/1000/60/60*480 Erl
    ,count(*) over(ORDER BY NULL ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) "@totalrows"
     FROM (
          SELECT /*+ parallel(8)   */dt.TIMEMARK,dt.GRIDX,dt.GRIDY,dt.CGI,
                sum(MRTotal) MRTotal
               ,sum(MOCMRCount) MOCMRCount
               ,sum(MTCMRCount) MTCMRCount
      3    4         FROM MRGrid_RxQualLev dt,CDR_VIPQuality cdrv
      5    6    7    8    9   10   11   12   13  WHERE dt.TIMEMARK >= '2012-09-04 13:00:00' and dt.TIMEMARK< '2012-09-04 14:00:00'
     AND dt.CGI=cdrv.LASTCGI
     AND cdrv.imsi= '432'
     and (dt.gridx>=0 and dt.gridx<=0) 
     and  (dt.gridy>=0 and dt.gridy<=0)
    GROUP BY dt.TIMEMARK,dt.GRIDX,dt.GRIDY,dt.CGI
    ) dt
    ,cfg_cell cfg_cell_bscid  WHERE dt.cgi=cfg_cell_bscid.cgi
     and cfg_cell_bscid.bscid in (select bscid from cfg_bsc where mssid in(  select * from TABLE(broad_utility.f_str2varlist('655|309'))))
    GROUP BY dt.TIMEMARK,dt.GRIDX,dt.GRIDY,dt.CGI; 14   15   16   17   18   19   20   21   22  
    
    no rows selected
    
    Elapsed: 00:00:00.01
    
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 2239786818
    
    ---------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation				       | Name		     | Rows  | Bytes | Cost (%CPU)| Time     |	  TQ  |IN-OUT| PQ Distrib |
    ---------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	      |      |		  |
    |   1 |  PX COORDINATOR 			       |		     |	     |	     |		  |	     |	      |      |		  |
    |   2 |   PX SEND QC (RANDOM)			       | :TQ20004	     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,04 | P->S | QC (RAND)  |
    |   3 |    WINDOW BUFFER			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,04 | PCWP |		  |
    |   4 |     HASH GROUP BY			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,04 | PCWP |		  |
    |   5 |      PX RECEIVE 			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,04 | PCWP |		  |
    |   6 |       PX SEND HASH			       | :TQ20003	     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,03 | P->P | HASH	  |
    |   7 |        HASH GROUP BY			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,03 | PCWP |		  |
    |*  8 | 	HASH JOIN SEMI			       |		     |	   1 |	 117 |	  12   (9)| 00:00:01 |	Q2,03 | PCWP |		  |
    |   9 | 	 PX RECEIVE			       |		     |	     |	     |		  |	     |	Q2,03 | PCWP |		  |
    |  10 | 	  PX SEND HASH			       | :TQ20002	     |	     |	     |		  |	     |	Q2,02 | P->P | HASH	  |
    |  11 | 	   NESTED LOOPS 		       |		     |	     |	     |		  |	     |	Q2,02 | PCWP |		  |
    |  12 | 	    NESTED LOOPS		       |		     |	   1 |	 104 |	   2   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  13 | 	     VIEW			       |		     |	   1 |	  91 |	   2   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  14 | 	      HASH GROUP BY		       |		     |	   1 |	 113 |	   2   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  15 | 	       PX RECEIVE		       |		     |	   1 |	 113 |	   2   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  16 | 		PX SEND HASH		       | :TQ20001	     |	   1 |	 113 |	   2   (0)| 00:00:01 |	Q2,01 | P->P | HASH	  |
    |  17 | 		 HASH GROUP BY		       |		     |	   1 |	 113 |	   2   (0)| 00:00:01 |	Q2,01 | PCWP |		  |
    |  18 | 		  NESTED LOOPS		       |		     |	     |	     |		  |	     |	Q2,01 | PCWP |		  |
    |  19 | 		   NESTED LOOPS 	       |		     |	   1 |	 113 |	   2   (0)| 00:00:01 |	Q2,01 | PCWP |		  |
    |  20 | 		    PX BLOCK ITERATOR	       |		     |	     |	     |		  |	     |	Q2,01 | PCWC |		  |
    |* 21 | 		     TABLE ACCESS FULL	       | CDR_VIPQUALITY      |	   2 |	  44 |	   2   (0)| 00:00:01 |	Q2,01 | PCWP |		  |
    |* 22 | 		    INDEX RANGE SCAN	       | PK_MRGRID_RXQUALLEV |	   1 |	     |	   0   (0)| 00:00:01 |	Q2,01 | PCWP |		  |
    |  23 | 		   TABLE ACCESS BY INDEX ROWID | MRGRID_RXQUALLEV    |	   1 |	  91 |	   0   (0)| 00:00:01 |	Q2,01 | PCWP |		  |
    |* 24 | 	     INDEX UNIQUE SCAN		       | PK_CFG_CELL	     |	   1 |	     |	   0   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  25 | 	    TABLE ACCESS BY INDEX ROWID        | CFG_CELL	     |	   1 |	  13 |	   0   (0)| 00:00:01 |	Q2,02 | PCWP |		  |
    |  26 | 	 BUFFER SORT			       |		     |	     |	     |		  |	     |	Q2,03 | PCWC |		  |
    |  27 | 	  PX RECEIVE			       |		     |	 106K|	1356K|	   9   (0)| 00:00:01 |	Q2,03 | PCWP |		  |
    |  28 | 	   PX SEND HASH 		       | :TQ20000	     |	 106K|	1356K|	   9   (0)| 00:00:01 |	      | S->P | HASH	  |
    |  29 | 	    VIEW			       | VW_NSO_1	     |	 106K|	1356K|	   9   (0)| 00:00:01 |	      |      |		  |
    |* 30 | 	     HASH JOIN			       |		     |	 106K|	1043K|	   9   (0)| 00:00:01 |	      |      |		  |
    |  31 | 	      PX COORDINATOR		       |		     |	     |	     |		  |	     |	      |      |		  |
    |  32 | 	       PX SEND QC (RANDOM)	       | :TQ10000	     |	 209 |	1672 |	   3   (0)| 00:00:01 |	Q1,00 | P->S | QC (RAND)  |
    |  33 | 		PX BLOCK ITERATOR	       |		     |	 209 |	1672 |	   3   (0)| 00:00:01 |	Q1,00 | PCWC |		  |
    |  34 | 		 TABLE ACCESS FULL	       | CFG_BSC	     |	 209 |	1672 |	   3   (0)| 00:00:01 |	Q1,00 | PCWP |		  |
    |  35 | 	      COLLECTION ITERATOR PICKLER FETCH| F_STR2VARLIST	     | 16360 | 32720 |	   5   (0)| 00:00:01 |	      |      |		  |
    ---------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       8 - access("CFG_CELL_BSCID"."BSCID"="BSCID")
      21 - filter("CDRV"."IMSI"='432')
      22 - access("DT"."TIMEMARK">=TIMESTAMP' 2012-09-04 13:00:00.000000000' AND "DT"."CGI"="CDRV"."LASTCGI" AND "DT"."GRIDX"=0 AND
    	      "DT"."GRIDY"=0 AND "DT"."TIMEMARK"<TIMESTAMP' 2012-09-04 14:00:00.000000000')
           filter("DT"."GRIDX"=0 AND "DT"."GRIDY"=0 AND "DT"."CGI"="CDRV"."LASTCGI")
      24 - access("DT"."CGI"="CFG_CELL_BSCID"."CGI")
      30 - access("MSSID"=TO_NUMBER(VALUE(KOKBF$)))
    
    Note
    -----
       - Degree of Parallelism is 8 because of hint
    
    
    Statistics
    ----------------------------------------------------------
    	 12  recursive calls
    	  0  db block gets
    	 51  consistent gets
    	  0  physical reads
    	  0  redo size
    	889  bytes sent via SQL*Net to client
    	509  bytes received via SQL*Net from client
    	  1  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	  0  rows processed



    方法二

    --查看sql执行计划
     

    SQL> EXPLAIN PLAN FOR SELECT /*+ index(b,idx_CFG_IMEI_imei) */ * FROM ml_test1 a,CFG_IMEI b
      2    WHERE
      3   substr(a.imei,1,6)=b.imei;
     
    Explained
     
    SQL> select * from table(dbms_xplan.display);
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Plan hash value: 1759924441
    --------------------------------------------------------------------------------
    | Id  | Operation                     | Name              | Rows  | Bytes | Cost
    --------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |                   |  9980 |   594K|
    |   1 |  MERGE JOIN                   |                   |  9980 |   594K|
    |   2 |   TABLE ACCESS BY INDEX ROWID | ML_TEST1          |  9980 |   165K|
    |   3 |    INDEX FULL SCAN            | IDX_ML_TEST1_01   |  9980 |       |
    |*  4 |   SORT JOIN                   |                   |   164 |  7216 |
    |   5 |    TABLE ACCESS BY INDEX ROWID| CFG_IMEI          |   164 |  7216 |
    |   6 |     INDEX FULL SCAN           | IDX_CFG_IMEI_IMEI |   164 |       |
    --------------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       4 - access(SUBSTR("IMEI",1,6)="B"."IMEI")
           filter(SUBSTR("IMEI",1,6)="B"."IMEI")
     
    19 rows selected
     
    SQL> 

    展开全文
  • [color=#0000FF]不会用执行计划 , 在网上找了一段语句试了,怎么会出现是这个? 图片中画红圈的两行是什么意思, 这个是执行计划吗?[/color][img=...
  • 怎么看mysql执行计划

    2021-03-23 20:17:23
    这时候,我们就需要查看sql的执行计划,以此来分析sql执行缓慢的问题所在。 如何查看mysql执行计划 方法一:使用explain(推荐) explain select * from t_user; 方法二:使用Navicat解释执行 执行计划...

    前言

          mysql是关系型数据库中比较流行的一款数据库。在工作中使用mysql,难免会遇到sql执行缓慢的情况。这时候,我们就需要查看sql的执行计划,以此来分析sql执行缓慢的问题所在。

    如何查看mysql执行计划

    方法一:使用explain(推荐)

    explain select * from t_user;

    方法二:使用Navicat解释执行

    执行计划结果

    下面,我们依次解析每个字段的含义。

    id(重要)

    表示表的读取顺序,分为两种情况:

    • id相同,读表顺序从上往下
    • id不同,优先读取id大的

    举例1: id相同,先读取表t2(t_user_age),再读取表t1(t_user)

    举例2:id不同,从大到小,所以先读取t_user_age, 再读取子查询的衍生表,最后读取t_user表。

    select_type

    查询类型,有如下类型:

    • simple           简单语句,不包含子查询或者union
    • primary         若语句包含复杂查询,则语句的最外层为primary
    • subquery       在select或者where中包含子查询
    • derived          在from中包含的子查询为derived(衍生表)
    • union             在union之后的查询,被标记为union类型
    • union result   从union获取结果的select查询
    • 其余类型。。。

    举例1:simple类型

    举例2: union,union result, primary

    table

    如题,表示表名

    type(重要)

    索引类型, 有很多种,常见的类型按照性能从差到好为:

    all < index < range < ref < eq_ref < const < system

    • all                   表示全表扫描,性能最差
    • index              走索引,扫描了索引文件的全部数据
    • range             走索引,索引列使用了范围查找,如between, in, <, >
    • ref                  表示非唯一性索引
    • eq_ref            表示唯一索引
    • const              一次就找到数据的唯一索引
    • system           只有一条数据的系统表

    在实际业务中,sql能使用到range, ref级别的索引就算是比较好的了。

    possible_keys

    mysql分析可能使用到的索引,实际不一定会用到。

    key(重要)

    实际使用的索引,key有值才表示真的用到了索引

    key_len

    使用到的索引长度,根据索引组合字段类型所占的字节数来计算。在能找到正确数据的情况下,长度越短越好。

    ref

    哪些列或常量被用于查找索引列上的值,即索引列=ref值。值有:

    • const       常量
    • 表的列     

    rows(重要)

    mysql估算的找到满足条件的记录所需要读取的行数,越少越好。

    extra(重要)

    mysql将执行计划的其他信息放到extra中。常见的有:

    1. Using filesort                             排序没有用到索引(重要,能使用索引排序是更好的)
    2. Using temporary                       使用了临时表保存中间结果,mysql在对查询结果排序时使用临时表,常见于order by 和group by(重要,使用临时表降低性能,最好排除掉)
    3. Using index                              表明select查询使用了覆盖索引(即只查索引文件就找到了需要的数据,不再需要访问表)
    4. Using where                             表示使用了where查询条件
    5. Using join buffer                       表示表join关联使用到了缓存
    6. impossible where                     表示where条件永远是false,拿不到数据
    7. using index condition               使用了索引条件

    结论

    分析执行计划,重点关注id, type, key, rows, extra信息。id查看表加载顺序,type查看索引类型,key查看使用的具体索引,rows关注查找结果所需遍历的数据量大不大,extra关注其他一些影响性能的关键信息。

    欢迎关注我的公众号,不定期分享java文章,一起学习进步。

     

    展开全文
  • mysql的执行计划怎么看1、执行计划中包含的信息 ​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 ​ 可以使用explain+SQL语句来模拟优化器执行SQL...
  • 怎么看执行计划执行计划里有什么? 索引失效的原因: 索引列进行运算; 针对索引使用函数; 对索引列使用隐式转换; 用 != 和null 判断; like ‘%-’ 百分号在前; 看执行计划: 执行一条SQL语句后...
  • oracle 执行计划顺序是怎么看

    千次阅读 2015-05-29 19:17:57
    阅读oracle执行计划的方法:  先从最开头一直往右,直到看到最右边的并列的地方,对于不并列的,靠右的先执行:对于并列的,靠上的先执行。   即并列的缩进块,从上往下执行,非并列的缩进块,从下往上执行。...
  • 阅读oracle执行计划的方法: 先从最开头一直往右,直到看到最右边的并列的地方,对于不并列的,靠右的先执行:对于并列的,靠上的先执行。  即并列的缩进块,从上往下执行,非并列的缩进块,从下往上执行。 ...
  • mysql的查看执行计划的语句很简单,explain+你要执行的sql语句就OK了。 举一个例子 EXPLAIN SELECT * from employees where employees.gender='M' 返回的结果如下: 这些结果都代表什么? id是一组...
  • 怎么看执行计划啊?

    2012-07-17 11:46:04
    怎么看数据库里面的执行计划啊??????????????
  • 项目需要,要获取oracle的sql的对应的执行计划,之前mysql的版本已经实现过了。mysql的执行计划可以参考这个博客: http://my.oschina.net/zimingforever/blog/60233 首先toad,PLsql这类工具本身就带...
  • 查看执行计划,发现没有任何反应。 CREATE TABLE student ( id number(10) PRIMARY KEY, name varchar(10) not NULL, name2 char(10) DEFAULT 'default' NOT NULL, age number(4) ) tablespac
  • 在面试简历中,如果您的技能里面写道:熟悉SQL语句调优,那必然会问到 Explain 执行计划怎么看? 到底Explain有什么用?? 当Explain 与 SQL语句一起使用时,MySQL 会显示来自优化器关于SQL执行的信息。也就是说,...
  • [img=https://img-bbs.csdn.net/upload/201403/06/1394089211_298530.png][/img] 如上图的执行计划, 1. 执行顺序怎么看呢? 是上面的先执行还是下面先执行? 2. 循环嵌套连接那里, 怎么看哪个表是驱动表?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 447
精华内容 178
关键字:

执行计划怎么看