NAME

DBIx::Class::Helper::ResultSet::Explain - Get query plan for a ResultSet

SYNOPSIS

This module mostly makes sense to be used without setting as a component:

ues Devel::Dwarn;
Dwarn DBIx::Class::ResultSet::Explain::explain($rs)

But as usual, if you prefer to use it as a component here's how:

package MyApp::Schema::ResultSet::Foo;

__PACKAGE__->load_components(qw{Helper::ResultSet::Explain});

...

1;

And then in a script or something:

use Devel::Dwarn;
Dwarn $rs->explain;

DESCRIPTION

This is just a handy little tool that gives you the query plan for a given ResultSet. The output is in no way normalized, so just treat it as a debug tool or something. The only supported DB's are those listed below. Have fun!

See "NOTE" in DBIx::Class::Helper::ResultSet for a nice way to apply it to your entire schema.

EXAMPLE OUTPUT FROM SUPPORTED DB's

SQlite

[
  [
    0,
    "Init",
    0,
    11,
    0,
    "",
    "00",
    undef
  ],
  [
    1,
    "OpenRead",
    0,
    3,
    0,
    4,
    "00",
    undef
  ],
  [
    2,
    "Rewind",
    0,
    9,
    0,
    "",
    "00",
    undef
  ],
  [
    3,
    "Rowid",
    0,
    1,
    0,
    "",
    "00",
    undef
  ],
  [
    4,
    "Column",
    0,
    1,
    2,
    "",
    "00",
    undef
  ],
  [
    5,
    "Column",
    0,
    2,
    3,
    "",
    "00",
    undef
  ],
  [
    6,
    "Column",
    0,
    3,
    4,
    "",
    "00",
    undef
  ],
  [
    7,
    "ResultRow",
    1,
    4,
    0,
    "",
    "00",
    undef
  ],
  [
    8,
    "Next",
    0,
    3,
    0,
    "",
    "01",
    undef
  ],
  [
    9,
    "Close",
    0,
    0,
    0,
    "",
    "00",
    undef
  ],
  [
    10,
    "Halt",
    0,
    0,
    0,
    "",
    "00",
    undef
  ],
  [
    11,
    "Transaction",
    0,
    0,
    14,
    0,
    "01",
    undef
  ],
  [
    12,
    "TableLock",
    0,
    3,
    0,
    "Gnarly",
    "00",
    undef
  ],
  [
    13,
    "Goto",
    0,
    1,
    0,
    "",
    "00",
    undef
  ]
]

Pg

[
  [
    "Seq Scan on \"Gnarly\" me  (cost=0.00..16.20 rows=620 width=100) (actual time=0.002..0.002 rows=0 loops=1)"
  ],
  [
    "Total runtime: 0.043 ms"
  ]
]

mysql

[
  [
    1,
    "SIMPLE",
    "me",
    "ALL",
    undef,
    undef,
    undef,
    undef,
    1,
    "100.00",
    ""
  ]
]

AUTHOR

Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.