Tässä on nyt taas tullut tuota PDO:ta käyteltyä, niin heräsi sellainen kysymys, että kun kerään sql-kyselyllä haetun datan fetchAll-metodilla, niin lataako tuo kaiken haetun datan muistiin, kun kerran metodi ne samassa taulukossa palauttaa? Mietin vaan, että kuinka käytännöllinen tuo metodi on hieman suurempien data määrien kohdalla...
Kyllä, se lataa kaiken muistiin. Myös tavallinen MySQL-haku (mysql_query) lataa kaiken muistiin, vaikkei data olekaan vielä yhdessä PHP:n muuttujassa. Tämä ei kuitenkaan yleensä ole ongelma.
Jos puhutaan todella suurista datamääristä, optimointi voi olla tarpeen. Perinteisten MySQL-funktioiden kohdalla pitää tällöin käyttää funktiota mysql_unbuffered_query, johon kuitenkin liittyy jonkin verran rajoituksia. PDO:n MySQL-haut ovat oletuksena puskuroimattomia, minkä vuoksi kahden kyselyn tuloksia ei voi PDO:lla selata samaan aikaan (paitsi tietenkin hakemalla yhden tulokset valmiiksi ennen toisen ajamista tai määräämällä erikseen, että käytetään puskuroituja hakuja).
Kiitti vastauksesta. Niin no data määrät tässä mun käytössä tuskin tulee ylittämään, sitä memory_limitin oletus määrää 8MT.
Aihe on jo aika vanha, joten et voi enää vastata siihen.