Limit ist ja ein Feaature von MySQL, und damit glasklar der Obhut des DBMS zuzurechnen. Es werde dann nur die Zeilen esportiert, die betroffen sind.
der wesentliche vorteil des limit ist der offset. bei db2 und oracle gibts dies nicht, sondern nur top oder first. daher muß man dort schon mit tricks arbeiten, wenn man die offset möglichkeit braucht. dabei werden aber immer alle zeilen (mit subselects) angesprochen.
aber hier war ja die frage, ob query bereits die daten der zeilen in den speicher bringt. würde mysql (unabhängig von php) dies bereits tun, müßten alle zeilen gemäß der bedingung im speicher sein. dort würde dann limit ansetzen.
dies kann ich aber nicht glauben. dies würde zuviel overhead und ressourcen kosten. daher glaube ich, daß mysql nach dem query maximal eine pointer-liste auf die zeilen hat, welche mit limit adressiert werden. erst beim fetch holt mysql die zeile in den speicher.
mag sein daß das angesprochene php-myslq-api bereits nach query alle daten der betroffenen zeilen (auch mit limit) abholt, (diese wären dann auf jeden fall im php-prozeß) und mit php-mysql-api-fetch aus dem php-prozeß bereitstellt. klingt für mich aber auch sehr merkwürdig.
wahrscheinlicher scheint mir, daß auch dort nur eine pointer-liste existiert, welche möglicherweise mit php-query in den php-prozeß geholt wird, und beim php-fetch der pointer an mysql zum holen der daten der zeile gegeben wird.
mit einem kleinen test ließe sich möglicherweise mehr klarheit verschaffen:
1. update tabelle set wert = wert1
2. query select tabelle (wenn daten der zeilen jetzt schon im speicher müßte wert1 sein)
3. update tabelle set wert = wert2
4. schleife um fetch (wenn daten der zeilen bereits im speicher müßte wert1 sein)
wenn jetzt aber wert2 ist, hat fetch die daten erst jetzt geholt.
nach meinem urlaub mache ich mal son test.