2012-11-01 4 views
6

Ich sehe nur diese articePHP vs MySQL Leistung (wenn, Funktionen) in Abfrage

Ich muss wissen, was ist am besten berformance in diesen Fällen

wenn statment in Abfrage

SELECT *,if(status = 1 , "active" ,"unactive") as status_val FROM comments

VS

<?php 
    $x = mysql_query("SELECT * FROM comments"); 

    while($res = mysql_fetch_assoc($x)){ 
     if($x['status'] == 1){ 
      $status_val = 'active'; 
     }else{ 
      $status_val = 'unactive'; 
     } 
    } 
    ?> 

Cut 10 aus string

SELECT * , SUBSTR(comment, 0, 10) as min_comment FROM comments

VS

<?php 
    $x = mysql_query("SELECT * FROM comments"); 

    while($res = mysql_fetch_assoc($x)){ 
     $min_comment = substr($x['comment'],0,10) ; 
    } 
    ?> 

etc ????? und Wenn ich MYSQL-Funktionen oder PHP-Funktionen verwende?

+1

Sie können es mit Microtime Yourself testen. Aber das ist Over-Optimierung und Geschwindigkeit Verbesserung wird sehr klein sein ... Die meiste Zeit Sie wählen nicht große Ergebnissätze von db –

+1

[** Bitte, verwenden Sie nicht mysql_ * 'Funktionen in neuen Code **] (http://bit.ly/phpmsql). Sie werden nicht mehr gepflegt und der [Depretierungsprozess] (http://j.mp/Rj2iVR) hat damit begonnen. Siehe die [** rote Box **] (http://j.mp/Te9zIL)? Erfahren Sie mehr über [* prepared statements *] (http://j.mp/T9hLWi) und verwenden Sie [PDO] (http://php.net/pdo) oder [MySQLi] (http://php.net/) mysqli) - [dieser Artikel] (http://j.mp/QEx8IB) wird Ihnen helfen zu entscheiden, welche. Wenn Sie PDO wählen, [hier ist ein gutes Tutorial] (http://j.mp/PoWehJ). –

Antwort

2

Hier ist eine schöne Beschreibung Ihrer Frage: Doing calculations in MySQL vs PHP

Bei dem zweiten Beispiel kann die Geschwindigkeit Problem von Bedeutung sein. allererst Sie nicht wissen, wie groß Ihre Kommentare sind, so im Falle von

$x = mysql_query("SELECT * FROM comments"); 

while($res = mysql_fetch_assoc($x)){ 
    $min_comment = substr($x['comment'],0,10) ; 
} 

fragen Sie Ihren Server Sie alles zurück (hier meine ich die ganze Länge des Kommentars) und diese können erheblich sein. Multiplizieren mit der Anzahl der Zeilen in der Tabelle kann es eine ziemlich große Datenmenge sein, die zwischen php und sql übertragen werden muss. Im zweiten Fall ist dies SELECT * , SUBSTR(comment, 0, 10) as min_comment FROM comments Dies wird bereits auf dem Server geschehen und benötigt keinen zusätzlichen Speicher.

Im Falle des ersten Beispiels, denke ich, es ist auch besser, es auf SQL-Seite zu tun, weil Sie danach noch eine zusätzliche Schleife machen müssen. Abgesehen davon können Menschen, die Ihren Code lesen, verwirrt sein, warum genau dieser Code benötigt wird.

4

Kommt drauf an. Von einem Netzwerk-Sicht, in der ersten VS gewinnt PHP und in der zweiten VS gewinnt MYSQL. Das liegt daran, dass Sie weniger Daten über den Socket senden. Und damit wird das Skript schneller.

0

Nur Antwort: Messen Sie es! Sie haben zwei Arbeitslösungen und möchten die beste Ausführungszeit erreichen.

1

In diesem Fall verhindert die Verwendung von MySQL-Funktionen das Durchlaufen von PHP und spart viel Code.

In anderen Fällen haben sie keine Alternative: zum Beispiel, wenn Sie sie im WHERE Teil verwenden.

In Bezug auf die Leistung ist der Unterschied in den meisten Fällen trivial: Verwenden Sie die einfachste Lösung.

+0

+1 für die letzte Zeile –

0

Ich würde sagen, es hängt alles von den Systemen auf beiden Seiten und aktuelle Belastung. Normalerweise sind DB-Server stämmiger als Desktop-Computer und es wäre schneller, das Ganze auf der DB-Seite zu erledigen, anstatt es zu teilen und teilweise PHP zu verwenden.