PDO: Custo da chamada prepare () em um loop?
Estou escrevendo uma classe de banco de dados para o meu site com funções comofetchOne
, fetchAll
que prepara, executa (+ bind) e busca a consulta em um só, para que eu não precise chamar essas funções individualmente todas as vezes. Alguns trabalhos cron no meu site executam milhares ou até milhões de consultas dentro de um loo
Usar minha classe faria com que a instrução fosse re-preparada a cada iteração do loop ou o DOP "lembraria" que a consulta já foi preparada? Isso afetaria significativamente o desempenho e, em caso afirmativo, a solução seria fornecer apenas uma função que passe na instância do banco de dados e faça algo como$db->getDb()->prepare($query);
fora do loop? Ou há uma solução melhor
Exemplo de função:
public function fetchOne($query, $params = array(), $fetchMode = PDO::FETCH_ASSOC)
{
$stmt = self::prepareExecute($query, $params);
$result = $stmt->fetch($fetchMode);
if (count($result) < 1)
$result = FALSE;
$stmt->closeCursor();
unset($stmt);
return($result);
}