Voglio usare pdo nella mia applicazione, ma prima voglio capire come internamente PDOStatement->fetch
e PDOStatement->fetchAll
.Come funziona PHP PDO internamente?
Per la mia applicazione, voglio fare qualcosa come "SELECT * FROM myTable" e inserirla nel file csv e ha circa 90000 righe di dati.
La mia domanda è, se uso PDOStatement->fetch
come io sto usando qui:
// 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 dopo ogni prelevare dal database, comporteranno per che recuperano gli sarebbe conservare in memoria?
Significato quando faccio il secondo recupero, la memoria avrebbe i dati del primo recupero oltre ai dati per il secondo recupero.
E così se ho 90000 righe di dati e se sto facendo fetch ogni volta che la memoria viene aggiornata per prendere nuovi risultati di recupero senza rimuovere risultati dal precedente recupero e quindi per l'ultima memoria di recupero avrebbe già 89999 righe di dati .
- È così che funziona
PDOStatement::fetch
? - Prestazioni saggio come si accumula lo contro
PDOStatement::fetchAll
?
Aggiornamento: Qualcosa su di prendere e fetchAll dal punto di utilizzo della memoria di vista
Volevo solo aggiungere qualche cosa a questa domanda come recentemente trovato qualcosa per quanto riguarda prendere e fetchAll, spero che questo renderebbe questa domanda vale la pena per le persone vorrebbe visitare questa domanda in futuro per avere un po 'di comprensione sui parametri fetch e fetchTutti.
fetch non memorizza le informazioni in memoria e funziona su una base riga per riga, quindi passerebbe attraverso il set di risultati e restituirà la riga 1, che di nuovo andrebbe al set di risultati e di nuovo restituirà riga 2 non restituirà la riga 1 e 2 ma restituirà solo la riga 2, quindi fetch non memorizzerà nulla in memoria ma fetchAll memorizzerà i dettagli nelle memorie. Quindi fetch è l'opzione migliore rispetto a fetchAll se abbiamo a che fare con un set risultante di circa 100K di dimensione.
Questa domanda è chiara o richiede ancora ulteriori informazioni? – Rachel