Quiero usar pdo en mi aplicación, pero antes de eso quiero entender cómo internamente PDOStatement->fetch
y PDOStatement->fetchAll
.¿Cómo funciona PHP PDO internamente?
Para mi aplicación, deseo hacer algo como "SELECT * FROM myTable" e insertarlo en un archivo csv y tiene alrededor de 90000 filas de datos.
Mi pregunta es, si uso PDOStatement->fetch
como lo estoy usando aquí:
// First, prepare the statement, using placeholders
$query = "SELECT * FROM tableName";
$stmt = $this->connection->prepare($query);
// Execute the statement
$stmt->execute();
var_dump($stmt->fetch(PDO::FETCH_ASSOC));
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "Hi";
// Export every row to a file
fputcsv($data, $row);
}
Will después de cada buscarlo a la base de datos, para dar lugar a que recuperan sería almacenarlos en la memoria?
Lo que significa que cuando hago la segunda búsqueda, la memoria tiene datos de primera búsqueda, así como datos para la segunda búsqueda.
Y si tengo 90000 filas de datos y si voy a buscar cada vez que la memoria se actualiza para tomar un nuevo resultado de búsqueda sin eliminar los resultados de la búsqueda anterior y para la última recuperación memoria ya tendría 89999 filas de datos .
- ¿Es así como
PDOStatement::fetch
obras? - Rendimiento sabio cómo se apila esta pila contra
PDOStatement::fetchAll
?
Actualización: Algo sobre traer y fetchAll desde el punto de vista
Sólo quería añadir algo a esta pregunta el uso de memoria en fecha tan reciente encontrado algo con respecto a traer y fetchAll, espero que esto haría esta pregunta que vale la pena porque la gente visitaría esta pregunta en el futuro para entender algo sobre fetch y fetchAll parameters.
fetch no almacena información en la memoria y funciona en fila a fila, por lo que pasaría por el conjunto de resultados y la fila 1 de retorno, que volvería al conjunto de resultados y luego volvería a la fila 2 no devolverá la fila 1 ni la 2, sino que solo devolverá la fila 2, por lo que fetch no almacenará nada en la memoria, pero fetchAll almacenará los detalles en las memorias. Así que buscar es una mejor opción en comparación con fetchAll si se trata de un conjunto resultante de alrededor de 100K de tamaño.
¿Está clara esta pregunta o aún requiere más información? – Rachel