У меня есть приложение, в котором база данных изменяется редко, а приложение требует много операций чтения из базы данных, что значительно снижает производительность. Многие из этих чтений точно такие же. Итак, я хочу, чтобы 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.