I want to use pdo in my application, but before that I want to understand how internally
PDOStatement->fetch and PDOStatement->fetchAll.
Benim uygulama için, ben "myTable SELECT * FROM" ve csv dosyasına eklemek gibi bir şey yapmak istiyorum ve bu verilerin yaklaşık 90000 satır vardır.
Ben burada onu kullanıyorum ben PDOStatement->fetch kullanırsanız Benim soru şudur:
// 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);
}
Sonra her veritabanından getirme bellekte mağaza olacağını almak için neden olacaktır?
Ben ikinci getir ne zaman, yani bellek ikinci almak için ilk getirme veri yanı sıra veri olurdu.
Ve bu yüzden veri 90000 satırları varsa ve bellek almak güncelleme ediliyor göre her zaman alıp yapıyorum, yeni gelen sonuçları çıkarmadan sonucu getir önceki getirme ve böylece son getirme bellek zaten veri 89999 satırları olurdu için.
- Is this how
PDOStatement::fetchworks ? - Performance wise how does this stack
up against
PDOStatement::fetchAll?
Update: Something about fetch and fetchAll from memory usage point of view
Son zamanlarda insanlar alıp fetchAll parametrelerin bazı anlayış almak için gelecekte bu soruyu ziyaret edeceğini için bu soru değerli kılacak umut getirme ve fetchAll ilgili bir şey buldum sanki sadece bu soruya bir şey ilave etmek istedim.
getirme bellekte bilgi depolamak ve temel satırdan satıra çalışır, bu yüzden yeniden ayarlamak sonuca gitmek yerine, set sonucu ve dönüş satırın 1 geçmesi ve tekrar dönmeyecektir burada satır 2 zihin dönmek daha olur olmaz satır 1 gibi 2 değil, sadece satır 2 dönecektir, böylece getirme belleğe bir şey saklamak olmaz ama fetchAll anıları içine ayrıntılarını depolar olacaktır. Yani getirme etrafında 100K boyutunda bir çıkan dizi ile ilgili ise fetchAll kıyasla daha iyi bir seçenektir.