phpbar.de logo

Mailinglisten-Archive

[php] MySQL Datensatzzeiger

[php] MySQL Datensatzzeiger

Yannik Hampe yannik at cipher-code.de
Son Jun 8 00:26:54 CEST 2008



Dr. Volker Göbbels wrote:
> Ahoi ;)
> 
>> Wenn du oft in den Datensätzen blättern musst, empfehle ich dir, die
>> ganze Ergebnismenge zuerst in ein array zu kopieren, z. B. mit
>> array_push.

Doofe Idee, denn es gibt auch den Operator [], der das gleiche macht, 
nur schneller ist :-P.
>>
>> http://www.php.net/manual/de/function.mysql-fetch-array.php#76598
> 
> *ürgs* Aber nur, wenn die maximal mögliche Datenmenge 1000 Records  
> (oder so) nicht überschreitet ;)
> Wir haben hier einen Kunden, der Tabellen mit 1-50 Mio. Datensätzen  
> hat. Ein "select *" wäre da der Server Tod ;)
> Ich gebe aber zu, daß ich, wenn ich genau kontrollieren kann, wieviele  
> Datensätze da geflogen kommen, sehr gern zum Beispiel auf ADOdb's  
> getAll() zurück greife ;o)

Du bist dir aber schon im klaren, das php's mysql_*-Funktion oer 
Standardkonfig alles erstmal cachen, was von mysql zurückkommt und du 
mit mysql_fetch_* nur über php's cache läufst? Naturlich funktioniert 
die seek-Funktion auch nichtmehr, wenn man diesen cache nicht verwendet 
(mysql_unbuffered_query()).

Es sollte allerdings auch nicht normal sein, dass man einfach mal select 
* auf eine Datenbank mit 50M Einträgen laufen lässt. Was will man den 
mit dem result machen? Wenn es sich nicht gerade um ein backupscript 
oder sowas handelt erscheint mir das grundsätzlich nicht so schlau.
> 
> Wenn ich einen Algorithmus sehe, der essentiell darauf angewiesen ist,  
> den "davor stehenden" Datensatz zu lesen, würde ich erst mal davon  
> ausgehen, daß der Algorithmus anders gebaut werden muß.

Jo, das denke ich allerdings auch. Vielleicht solltest du, Reinhold, mal 
dein Problem schildern, warum du überhaupt auf diese Funktion angewiesen 
bist...
> 
> Viele Grüße,
> Volker Göbbels

Yannik

php::bar PHP Wiki   -   Listenarchive