数据库

 首页 > 数据库 > MySql > mysql5.6.16下跟踪SQL查询转换的结果

mysql5.6.16下跟踪SQL查询转换的结果

分享到:
【字体:
导读:
         摘要:当SQL执行时,会做一些查询转换,你看到的SQL很可能被转换为其他的形式的SQL执行(有视图重写,查询转换,谓词推进等)。在Oracle下,可以通过10053跟踪SQL语句。在mysql下,可以通过设置optimizer_trace来实现。mysql> select version();+-----------+...

mysql5.6.16下跟踪SQL查询转换的结果

    当SQL执行时,会做一些查询转换,你看到的SQL很可能被转换为其他的形式的SQL执行(有视图重写,查询转换,谓词推进等)。在Oracle下,可以通过10053跟踪SQL语句。在mysql下,可以通过设置optimizer_trace来实现。

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.16    |
+-----------+
1 row in set (0.00 sec)

mysql> create view v_test5 as select * from test1 order by index_length;

mysql> set session optimizer_trace='enabled=on';

mysql> select count(1) from v_test5 where index_length>1024 ;

mysql> select * from information_schema.optimizer_trace;

QUERY   TRACE   MISSING_BYTES_BEYOND_MAX_MEM_SIZ 

 

select count(1) from v_test5 where index_length>1024


{
  "steps": [
    {
      "view": {
        "database": "test",
        "view": "v_test5",
        "in_select#": 1,
        "select#": 2,
        "merged": true
      }
    },
    {
      "join_preparation": {
        "select#": 1,
        "steps": [
          {
            "expanded_query": "/* select#1 */ select count(1) AS `count(1)` from (`test1`) where (`test1`.`INDEX_LENGTH` > 1024) order by `test1`.`INDEX_LENGTH`"
          }
        ]
      }
    },
    {
      "join_optimization": {
        "select#": 1,
        "steps": [
          {
            "transformations_to_nested_joins": {
              "transformations": [
                "parenthesis_removal"
              ],
              "expanded_query": "/* select#1 */ select count(1) AS `count(1)` from `test1` where (`test1`.`INDEX_LENGTH` > 1024) order by `test1`.`INDEX_LENGTH`"
            }
          },
          {
            "condition_processing": {
              "condition": "WHERE",
              "original_condition": "(`test1`.`INDEX_LENGTH` > 1024)",
              "steps": [
                {
                  "transformation": "equality_propagation",
                  "resulting_condition": "(`test1`.`INDEX_LENGTH` > 1024)"
                },
                {
                  "transformation": "constant_propagation",
                  "resulting_condition": "(`test1`.`INDEX_LENGTH` > 1024)"
                },
                {
                  "transformation": "trivial_condition_removal",
                  "resulting_condition": "(`test1`.`INDEX_LENGTH` > 1024)"
                }
              ]
            }
          },
          {
            "table_dependencies": [
              {
                "table": "`test1`",
                "row_may_be_null": false,
                "map_bit": 0,
                "depends_on_map_bits": [
                ]
              }
            ]
          },
          {
            "ref_optimizer_key_uses": [
            ]
          },
          {
            "rows_estimation": [
              {
                "table": "`test1`",
                "table_scan": {
                  "rows": 166,
                  "cost": 4
                }
              }
            ]
          },
          {
            "considered_execution_plans": [
              {
                "plan_prefix": [
                ],
                "table": "`test1`",
                "best_access_path": {
                  "considered_access_paths": [
                    {
                      "access_type": "scan",
                      "rows": 166,
                      "cost": 37.2,
                      "chosen": true
                    }
                  ]
                },
                "cost_for_plan": 37.2,
                "rows_for_plan": 166,
                "chosen": true
              }
            ]
          },
          {
            "attaching_conditions_to_tables": {
              "original_condition": "(`test1`.`INDEX_LENGTH` > 1024)",
              "attached_conditions_computation": [
              ],
              "attached_conditions_summary": [
                {
                  "table": "`test1`",
                  "attached": "(`test1`.`INDEX_LENGTH` > 1024)"
                }
              ]
            }
          },
          {
            "refine_plan": [
              {
                "table": "`test1`",
                "access_type": "table_scan"
              }
            ]
          }
        ]
      }
    },
    {
      "join_execution": {
        "select#": 1,
        "steps": [
        ]
      }
    }
  ]
}

mysql5.6.16下跟踪SQL查询转换的结果
分享到:
Oracle分组取第一条数据
Oracle分组取第一条数据看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵……)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ...
Oracle用户的创建和删除
Oracle用户的创建和删除1. 创建用户: SQL> create user user01 identified by user01; User created. 但登录提示01045的错误,缺少CREATE SESSION权限。 ERROR: ORA-01045: user USER01 lacks CREATE SESSION privilege; logon denied Enter user-name: 此时需要赋予connect权限给用户(原因见(2)),登陆后创建表提示0103...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……