Un colega me dijo que la ejecución de una declaración SQL siempre coloca los datos en RAM/swap en el servidor de la base de datos. Por lo tanto, no es práctico seleccionar grandes conjuntos de resultados.¿La ejecución de una declaración siempre toma en memoria el conjunto de resultados?
pensé que tal código
my $sth = $dbh->prepare('SELECT million_rows FROM table');
while (my @data = $sth->fetchrow) {
# process the row
}
recupera la fila del conjunto de resultados por fila, sin que se carga en la memoria RAM. Pero no puedo encontrar ninguna referencia a esto en documentos DBI o MySQL. ¿Cómo se crea y recupera realmente el conjunto de resultados? ¿Funciona igual para simples selects y joins?
pregunta sobre el propósito, ¿por qué necesita obtener millones de filas de registro e iterar recuperar todo? 'mysqldump' debería ser más apropiado – ajreal
@ajreal: Necesito procesar todas las filas en orden de inserción y generar algunos informes. – planetp
bien, ¿es racional hacer eso? Usando la función mysql para generar vista, ¿la tabla temporal no es suficiente para el informe? o incluso considerar el volcado de los GRANDES resultados en un archivo, y abrir el archivo para procesar – ajreal