2012-11-01 8 views
6

Ho appena vedere questa articePHP vs MySQL Performance (se, funzioni) nella query

ho bisogno di sapere cosa c'è è meglio berformance in questi casi

se statment nella query

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 da stringa

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) ; 
    } 
    ?> 

ecc ????? e Quando utilizzo le funzioni MYSQL o le funzioni PHP?

+1

Puoi testarlo con microtime. Ma questo è un eccesso di ottimizzazione e il miglioramento della velocità sarà molto piccolo ... La maggior parte delle volte non selezioni grandi set di risultati da db –

+1

[** Per favore, non usare le funzioni 'mysql_ *' nel nuovo codice **] (http://bit.ly/phpmsql). Non sono più mantenuti e il [processo di deprecazione] (http://j.mp/Rj2iVR) è iniziato su di esso. Vedi la [** red box **] (http://j.mp/Te9zIL)? Scopri invece [* prepared statements *] (http://j.mp/T9hLWi), e usa [PDO] (http://php.net/pdo) o [MySQLi] (http://php.net/ mysqli) - [questo articolo] (http://j.mp/QEx8IB) ti aiuterà a decidere quale. Se scegli PDO, [ecco un buon tutorial] (http://j.mp/PoWehJ). –

risposta

2

Ecco una bella descrizione della tua domanda: Doing calculations in MySQL vs PHP

Nel caso del secondo esempio il problema della velocità può essere significativo. Prima di tutto non si sa quanto grande sono i vostri commenti, quindi in caso di

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

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

vi chiedo il vostro server per restituire tutto quello (qui mi riferisco per tutta la lunghezza del commento) e questo può essere significativo. Moltiplicando per il numero di righe nella tabella può essere una dimensione piuttosto grande di dati, che devi trasferire tra php e sql. Nel secondo caso questo SELECT * , SUBSTR(comment, 0, 10) as min_comment FROM comments sarà già fatto sul server e non richiederà memoria aggiuntiva.

Nel caso del primo esempio, penso che sia anche meglio farlo in sql, perché in seguito sarà necessario eseguire un ulteriore ciclo. Oltre a questo, le persone che leggeranno il tuo codice potrebbero essere confuse perché esattamente hai bisogno di quel codice.

4

Dipende. Da un punto di vista della rete, nel primo VS, vince PHP e nel secondo VS vince MYSQL. Questo perché si inviano meno dati tramite socket. E così la sceneggiatura diventa più veloce.

0

Unica risposta: misuralo! Hai due soluzioni di lavoro e vuoi ottenere il miglior tempo di esecuzione.

1

In tal caso, l'utilizzo delle funzioni MySQL ti impedisce di eseguire il looping in PHP e ti consente di risparmiare molto codice.

In altri casi non hanno alternative: ad esempio, quando li si utilizza nella parte WHERE.

In termini di prestazioni, la differenza è banale nella maggior parte dei casi: utilizzare la soluzione più semplice.

+0

+1 per l'ultima riga –

0

Direi che tutto dipende dai sistemi alle estremità e al carico corrente. In genere i server DB sono più robusti delle macchine desktop e sarebbe più veloce eseguire l'intera operazione sul lato DB piuttosto che dividerlo e utilizzare parzialmente PHP.