Что не так с этим альтернативным механизмом для выполнения запросов DBI?

В документации DBI это рекомендуемый код для многократного выполнения запроса:

$sth = $dbh->prepare_cached($statement);
$sth->execute(@bind);
$data = $sth->fetchall_arrayref(@attrs);
$sth->finish;

Однако я вижу, что много * методы запроса позволяют передавать подготовленный и кэшированный дескриптор оператора вместо строки запроса, что делает это возможным:

$sth = $dbh->prepare_cached($statement);
$data = $dbh->selectall_arrayref($sth, \%attrs, @bind);

Что-то не так с этим подходом? Я не видел, чтобы он использовался в реальных условиях.

FWIW, я протестировал эти две реализации. И второй подход появляется немного (на 4%) быстрее при запросе двух последовательных строк с использованием fetchall_arrayref в первой реализации и selectall_arrayref во второй.

* Полный список методы запроса, которые это поддерживают: использовать подготовленные операторы с этим методом - значит использовать второй код путь выше)

5
задан Ether 7 February 2013 в 12:40
поделиться