php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.12.2008, 00:14  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard [Erledigt] mysql update mit/ohne schleife

Ich picke mir 100 Zeilen aus einer Tabelle, die sich während der verarbeitung nicht verändert, verarbeite diese in einer while-schleife, und markiere dann jede Zeile als erledigt:

PHP-Code:
$sql "SELECT 
               id,col2 
          FROM 
               tbl 
          WHERE 
               col1 = 1 
          ORDER BY 
               id 
           LIMIT 
               100"
;
$erg mysql_query($sql);
while (
$row mysql_fetch_assoc($erg)) {
  
// mach was mit $row['col2'];

  // Zeile als erledigt markieren
  
$upd "UPDATE tbl SET col1 = 0 WHERE id = " $row['id'];
  
mysql_query($upd);

Ich möchte den Scriptablauf beschleunigen und vermute, dass das 100-malige Updaten in der Schleife nicht grade sehr performant ist. Gibt es einen SQL-Ansatz, mit dem ich die 100 Zeilen auf einen Rutsch updaten kann. Wie müsste das aussehen?
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.12.2008, 00:44  
Neuer Benutzer
 
Registriert seit: 27.11.2008
Beiträge: 14
soulan befindet sich auf einem aufstrebenden Ast
Standard

Nein da gibt es soweit mir bekantn keinen wirklichen Ansatz

Wenn du ein SQL backup mit phpMyAdmin wiederherstellst führt er ja auch jeden einzelnen Query für jede Zeile einzeln aus. Das machst du in der schliefe ja auch, du könntest höchstens einen kleinen Sleep (sleep(1) davorsetzen damit SQL sozusagen zeit zum entspannen hat aber ich glaube das ist nicht nötig weil PHP sowieso wartet bis die Abfrage erledigt ist.

SQL kann eben nur einen Datzensatz gleichzeitig bearbeiten. Wichtig ist halt das du nach dem SELECT befehl das Rsultat mit mysql_free_result(); sauber machst

in deinem Fall: mysql_free_result($erg);

damit der SQL die Abfrage eben wieder sauber macht weil sonst kommt die Datenbank schnell an ihre Speicherlimits wenn es immer um 100 Datenbanken gleichzeitig geht
soulan ist offline  
Alt 05.12.2008, 17:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Na klar. Wieso machst Du nicht ein UPDATE der Art
Code:
UPDATE WHERE id IN (01, 05, 47 , 11)
. Das geht mit Sicherheit schneller. Und zu sleep als Performancesteigerung sag ich jetzt mal nichts..
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 05.12.2008, 21:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Die Bedingung im SELECT haust du einfach ins UPDATE.
Chriz ist offline  
Alt 05.12.2008, 21:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Naja, das wird vermutlich deswegen nicht gehen:
Zitat:
// mach was mit $row['col2'];
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 05.12.2008, 23:36  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Die Bedingung im SELECT haust du einfach ins UPDATE.
Vornkoppklatsch

... irgendwann werde ich die datensatzbezogene Denkweise verloren haben ...

Das sollte funktionieren. Merci fielmann.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 05.12.2008, 23:48  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Und die gropß angekündigten Aktionen
Zitat:
// mach was mit $row['col2'];
erfolgen dann im SQL oder wie?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL UPDATE syntax-Error Jacke Datenbanken 17 07.11.2008 11:58
Mysql startet unter Debian nach Update nicht mehr namlit Server, Hosting und Workstations 4 05.08.2008 15:49
[Erledigt] Probleme bei UPDATE in mysql per PHP Pit_php PHP Tipps 2008 5 16.06.2008 11:37
[Erledigt] MySQL UPDATE tut nichts cycap Datenbanken 22 04.06.2008 13:09
Queries fehlerhaft nach MySQL Update 4/5 BlueMood Datenbanken 3 16.08.2006 10:53
DB Update mit Link-Variable MYSQL medico Datenbanken 5 07.06.2006 23:18
MySQL Update Syntax Error PHP Tipps 2006 2 14.03.2006 18:09
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Update von ca 20000 Datensätzen MySQL PHP Tipps 2005-2 4 29.10.2005 19:48
Fehler im UPDATE Code für MySQL Plague PHP Tipps 2005 7 22.05.2005 02:03
Fehler im UPDATE Code für MySQL Plague Datenbanken 1 21.05.2005 16:55
php / Mysql Update auf neuste Version PHP Tipps 2007 5 05.01.2005 19:34
mysql update nr.2 PHP Tipps 2004-2 2 12.12.2004 19:53
mysql update PHP Tipps 2004-2 7 12.12.2004 12:22
[Erledigt] Wieso geht das mysql update nich PHP Tipps 2004 6 30.07.2004 11:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql update beschleunigen, mysql update while, mysql update ohne where, php update schleife, php update in schleife, mysql update schleife, php mysql while update, mysql while schleife update, mysql update while schleife, php mysql while und update funktion, mysql while update, mysql update while loop, php mysql update while, http://www.php.de/php-tipps-2008/49577-erledigt-mysql-update-mit-ohne-schleife.html, mysql update schleifen, sql update while schleife, mysql php update als schleife, mysql update auf while schleife, php update über schleife, php mysql update in schleife

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum