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:

use 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,
    10,
    0,
    undef,
    0,
    undef,
  ],
  [
    1,
    "OpenRead",
    0,
    3,
    0,
    4,
    0,
    undef,
  ],
  [
    2,
    "Rewind",
    0,
    9,
    0,
    undef,
    0,
    undef,
  ],
  [
    3,
    "Rowid",
    0,
    1,
    0,
    undef,
    0,
    undef,
  ],
  [
    4,
    "Column",
    0,
    1,
    2,
    undef,
    0,
    undef,
  ],
  [
    5,
    "Column",
    0,
    2,
    3,
    undef,
    0,
    undef,
  ],
  [
    6,
    "Column",
    0,
    3,
    4,
    undef,
    0,
    undef,
  ],
  [
    7,
    "ResultRow",
    1,
    4,
    0,
    undef,
    0,
    undef,
  ],
  [
    8,
    "Next",
    0,
    3,
    0,
    undef,
    1,
    undef,
  ],
  [
    9,
    "Halt",
    0,
    0,
    0,
    undef,
    0,
    undef,
  ],
  [
    10,
    "Transaction",
    0,
    0,
    17,
    0,
    1,
    undef,
  ],
  [
    11,
    "Goto",
    0,
    1,
    0,
    undef,
    0,
    undef,
  ],
]

Pg

[
  [
    "Seq Scan on \"Gnarly\" me  (cost=0.00..16.20 rows=620 width=100) (actual time=0.003..0.003 rows=0 loops=1)",
  ],
  [
    "Planning time: 0.102 ms",
  ],
  [
    "Execution time: 0.023 ms",
  ],
]

mysql

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

AUTHOR

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

COPYRIGHT AND LICENSE

This software is copyright (c) 2024 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.