У меня есть приложение, в котором база данных редко изменяется, и приложение требует много чтений из базы данных, что значительно снижает производительность. Многие из этих чтений абсолютно одинаковы. Поэтому я хочу, чтобы DBI кэшировал результаты чтения базы данных.
Например,
$sth = $dbh->prepare('SELECT a, b FROM a_table WHERE c = ?');
$sth->execute(5);
$sth->execute(2);
$sth->execute(5); # this call loads the cached result set
Сначала я подумал, что это то, что делает prepare_cached
, но я понял, что он кэширует только сам дескриптор оператора, а не фактические исполнения дескриптора оператора.
Полагаю, я мог бы достичь того, чего хотел, обернув выполнение оператора внутри запомненной подпрограммы. Но я просто вижу, есть ли ярлык в самом DBI.