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;
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 <moznion@gmail.com>