NAME

Pg::Explain::Hinter::Hint - Single hint for Pg::Explain plan

VERSION

Version 2.7

SYNOPSIS

These should be returned by Pg::Explain::Hinter, using:

my $hinter = Pg::Explain::Hinter->new( $plan );
if ( $hinter->any_hints ) {
    for my $hint ( @{ $hinter->hints } ) {
        ...
        printf "Hint for node #%d (%s) : %s\n", $hint->node->id, $hint->node_type, $hint->type;
        if ( $hint->details ) {
            print Dumper($hint->details);
        }
    }
}

Read "HINT TYPES" part for more description of what hint types there can be, and what is the meaning of details for them.

FUNCTIONS

new

Object constructor.

type

Accessor for type inside hint.

node

Accessor for node inside hint.

details

Accessor for details inside hint.

HINT TYPES

There are various types of hints, and each have their own meaning of ->details:

DISK_SORT

Node that the hint is for is using sorting that is spilling to disk. It's possible that increasing work_mem would help.

Details:

  • Used disk space in kB

INDEXABLE_SEQSCAN_SIMPLE

Node that the hint is for is using sequential scan, but it should be possible to add simple index (on one column) that will make it faster.

Details:

  • Column name that the index should be made on

INDEXABLE_SEQSCAN_MULTI_EQUAL_AND

Node that the hint is for us using sequential scan, and it should be possible to add index(es) to make it go faster.

This happens only for scans that have multiple equality checks joined with AND operator, like:

  • a = 1 and b = 2

  • x = 'abc' and z = 12

Details are arrayref where each element is hashref with two keys:

  • column : column name that was checked

  • value : the value that the check was using

AUTHOR

hubert depesz lubaczewski, <depesz at depesz.com>

BUGS

Please report any bugs or feature requests to depesz at depesz.com.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Pg::Explain::Node

COPYRIGHT & LICENSE

Copyright 2008-2023 hubert depesz lubaczewski, all rights reserved.

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