Не используйте сам sqlite, но может сработать следующее:
select * from table join (select count(*) from table);
Работает ли вышеперечисленное или нет, первое, что я ищу, это прокручиваемые курсоры, если вы собираетесь просматривать результаты -Я сомневаюсь, что у sqlite есть такие.Однако в DBI вы можете использовать fetchall_arrayref с max_rows для извлечения «страницы» за раз.Просто посмотрите пример в документации DBI под fetchall_arrayref - это что-то вроде этого:
my $rowcache = [];
while( my $row = ( shift(@$rowcache) || shift(@{$rowcache=$sth->fetchall_arrayref(undef,100)||[]}) )
) {
# do something here
}
ОБНОВЛЕНИЕ: добавлено то, что вы получите с помощью selectall_hashref, предполагая, что таблица называется содержимым с одним целочисленным столбцом, называемым "a":
$ perl -le 'use DBI; my $h = DBI->connect("dbi:SQLite:dbname=fred.db"); my $r = $h->selectall_hashref(q/select * from content join (select count(*) as count from content)/, "a");use Data::Dumper;print Dumper($r);'
$VAR1 = {
'1' => {
'count' => '3',
'a' => '1'
},
'3' => {
'count' => '3',
'a' => '3'
},
'2' => {
'count' => '3',
'a' => '2'
}
};