15a16 > _next_cache_num => $them->next_cache_num || 100, 44,53c45,59 < my $self = shift; < < my $sql = $self->sql . sprintf ' LIMIT 1 OFFSET %d', $self->{_place}++; < my $sth = $self->class->db_Main->prepare($sql); < my %data; < $sth->execute(@{$self->{_args}}); < $sth->bind_columns(\(@data{ @{ $sth->{NAME_lc} } })); < $sth->fetch; < my $use = {%data}; < $sth->finish; --- > my $self = shift; > my $cache = $self->{_next_cache_num}; > my $index; > > unless($index = $self->{_place}++ % $cache){ > my $sql = $self->sql . sprintf ' LIMIT %d OFFSET %d', $cache, $self->{_place} - 1; > my $sth = $self->class->db_Main->prepare($sql); > my %data; > $sth->execute(@{$self->{_args}}); > $sth->bind_columns(\(@data{ @{ $sth->{NAME_lc} } })); > $self->{_next_obj} = []; > while( $sth->fetch ){ > push @{ $self->{_next_obj} }, [$self->class->construct({%data})]; > } > } 55c61 < my @obj = ($self->class->construct($use)); --- > my @obj = @{ $self->{_next_obj}->[$index] } if($self->{_next_obj}->[$index]); 83a90,95 > > *{"$pkg\::next_cache_num"} = sub { > ${$pkg.'::next_cache_num'} = $_[1] if($_[1] and $_[1] =~ /^\d+$/); > ${$pkg.'::next_cache_num'}; > }; >