您的位置:首页 > 数据库 > MySQL

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

2014-08-08 14:26 567 查看
    当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 

<MEMO1>  <MEMO2>

<MEMO1>:select count(1) from v_test5 where index_length>1024

<MEMO2>:

{

  "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": [

        ]

      }

    }

  ]

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: