[![Build Status](https://travis-ci.org/moznion/MySQL-Explain-Parser.png?branch=master)](https://travis-ci.org/moznion/MySQL-Explain-Parser) [![Coverage Status](https://coveralls.io/repos/moznion/MySQL-Explain-Parser/badge.png?branch=master)](https://coveralls.io/r/moznion/MySQL-Explain-Parser?branch=master) # NAME MySQL::Explain::Parser - Parser for result of EXPLAIN of MySQL # SYNOPSIS use utf8; use MySQL::Explain::Parser qw/parse/; my $explain = <<'...'; +----+-------------+-------+-------+---------------+---------+---------+------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+-------+---------------+---------+---------+------+------+----------+-------------+ | 1 | PRIMARY | t1 | index | NULL | PRIMARY | 4 | NULL | 4 | 100.00 | | | 2 | SUBQUERY | t2 | index | a | a | 5 | NULL | 3 | 100.00 | Using index | +----+-------------+-------+-------+---------------+---------+---------+------+------+----------+-------------+ ... my $parsed = parse($explain); # => # [ # { # 'id' => '1', # 'select_type' => 'PRIMARY', # 'table' => 't1', # 'type' => 'index', # 'possible_keys' => undef, # 'key' => 'PRIMARY', # 'key_len' => '4', # 'ref' => undef # 'rows' => '4', # 'filtered' => '100.00', # 'Extra' => '', # }, # { # 'id' => '2', # 'select_type' => 'SUBQUERY', # 'table' => 't2', # 'type' => 'index', # 'possible_keys' => 'a', # 'key' => 'a', # 'key_len' => '5', # 'ref' => undef # 'rows' => '3', # 'filtered' => '100.00', # 'Extra' => 'Using index', # } # ] # DESCRIPTION MySQL::Explain::Parser is the parser for result of EXPLAIN of MySQL. This module provides `parse()` and `parse_vertical()` function. These function receive the result of EXPLAIN or EXPLAIN EXTENDED, and return the parsed result as array reference that contains hash reference. This module treat SQL's `NULL` as Perl's `undef`. Please refer to the following pages to get information about format of EXPLAIN; - [http://dev.mysql.com/doc/en/explain-output.html](http://dev.mysql.com/doc/en/explain-output.html) - [http://dev.mysql.com/doc/en/explain-extended.html](http://dev.mysql.com/doc/en/explain-extended.html) # FUNCTIONS - `parse($explain : Str)` Returns the parsed result of EXPLAIN as ArrayRef\[HashRef\]. This function can be exported. - `parse_vertical($explain : Str)` Returns the parsed result of EXPLAIN which is formatted vertical as ArrayRef\[HashRef\]. This function can be exported. e.g. use utf8; use MySQL::Explain::Parser qw/parse_vertical/; my $explain = <<'...'; *************************** 1. row *************************** id: 1 select_type: PRIMARY table: t1 type: index possible_keys: NULL key: PRIMARY key_len: 4 ref: NULL rows: 4 filtered: 100.00 Extra: *************************** 2. row *************************** id: 2 select_type: SUBQUERY table: t2 type: index possible_keys: a key: a key_len: 5 ref: NULL rows: 3 filtered: 100.00 Extra: Using index ... my $parsed = parse_vertical($explain); # LICENSE Copyright (C) moznion. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. # AUTHOR moznion