2012-11-01 6 views
6

po prostu zobaczyć articePHP vs MySQL wydajności (jeśli funkcjonuje) w zapytaniu

muszę wiedzieć, co jest najlepszym berformance w takich przypadkach

jeśli statment w zapytaniu

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 z ciągiem

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

itp ????? i Kiedy używam funkcji MYSQL lub funkcji PHP?

+1

Możesz go przetestować samodzielnie za pomocą mikrofonu. Ale to jest nadmierna optymalizacja, a poprawa szybkości będzie bardzo mała ... W większości przypadków nie wybieraj dużych zestawów wyników z db –

+1

[** Proszę, nie używaj funkcji 'mysql_ *' w nowym kodzie **] (http://bit.ly/phpmsql). Nie są już utrzymywane i rozpoczął się proces [wycofywania] (http://j.mp/Rj2iVR). Zobacz [** czerwone pudełko **] (http://j.mp/Te9zIL)? Dowiedz się więcej o [* przygotowanych wyciągach *] (http://j.mp/T9hLWi) i użyj [PDO] (http://php.net/pdo) lub [MySQLi] (http://php.net/ mysqli) - [ten artykuł] (http://j.mp/QEx8IB) pomoże ci zdecydować, który. Jeśli wybierzesz PDO, [tutaj jest dobry samouczek] (http://j.mp/PoWehJ). –

Odpowiedz

2

Oto miły opis Twojego pytania: Doing calculations in MySQL vs PHP

W przypadku drugiego przykładu kwestia prędkości może być znacząca. Przede wszystkim nie wiem, jak duże są Twoje komentarze, więc w przypadku

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

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

zapytać serwer wrócić wszystko (tu mam na myśli całą długość komentarzu), a to może być znacząca. Mnożenie przez liczbę wierszy w tabeli może być dość dużym rozmiarem danych, które musisz przesłać między php i sql. W drugim przypadku będzie to już wykonane na serwerze i nie będzie wymagać dodatkowej pamięci.

W przypadku pierwszego przykładu, myślę, że lepiej jest zrobić to po stronie sql, ponieważ nadal będziesz musiał wykonać dodatkową pętlę później. Poza tym ludzie, którzy będą czytać twój kod, mogą być zdezorientowani, dlaczego dokładnie potrzebujesz tego kodu.

4

To zależy. Z punktu widzenia sieci, w pierwszym VS wygrywa PHP, aw drugim VS wygrywa MYSQL. To dlatego, że wysyłasz mniej danych przez gniazdo. W ten sposób skrypt staje się szybszy.

0

Tylko odpowiedź: zmierzyć! Masz dwa działające rozwiązania i chcesz osiągnąć najlepszy czas wykonania.

1

W takim przypadku użycie funkcji MySQL uniemożliwia zapętlenie w PHP i oszczędza mnóstwo kodu.

W innych przypadkach nie mają alternatywy: na przykład, gdy używa się ich w części WHERE.

Pod względem wydajności różnica jest banalna w większości przypadków: użyj najprostszego rozwiązania.

+0

+1 dla ostatniej linii –

0

Powiedziałbym, że wszystko zależy od systemów na każdym końcu i bieżącym obciążeniu. Zwykle serwery DB są bardziej solidne niż komputery stacjonarne i szybciej byłoby zrobić wszystko po stronie DB, zamiast dzielić je i częściowo korzystać z PHP.