Skocz do zawartości

Optymalizacja


baca

Rekomendowane odpowiedzi

Witam, czy ktoś potrafi to zoptymalizować?

$em = mysql_query("SELECT * FROM emails GROUP BY email");
    
    $i = 0;
    while($r = mysql_fetch_array($em))
    {
        $i++;
        if($i>500)
            break;
        $id = $r['id'];
        $email = $r['email'];
        $lang = $r['lang'];
        $phone = $r['phone'];
        $bw = $r['bw'];
        $find = mysql_query("SELECT * FROM emails_all WHERE email='$email'");
        if(($f = mysql_fetch_array($find)))
        {
            $lang1 = $f['lang'];
            $phone1 = $f['phone'];
            $bw1 = $r['bw'];
            if($lang == "" || $phone == "" || $bw == "")
            {
                mysql_query("UPDATE INTO emails_all (id, email, lang, phone, bw) VALUES (null, '$email', '$lang', '$phone', '$bw')");
            }
        }
        else
        {
            mysql_query("INSERT INTO emails_all(id, email, lang, phone, bw) VALUES (null, '$email', '$lang', '$phone', '$bw')");
        }
        
        mysql_query("DELETE FROM emails WHERE id = $id");
    }
    mysql_query("OPTIMIZE TABLE emails");
    mysql_query("TRUNCATE emails");

Odnośnik do komentarza
Udostępnij na innych stronach

Można bez pętli to zrobić.

//robimy update jeśli w tabeli emails_all jest już podany email
$em=mysql_query("UPDATE emails t1, emails_all t2 SET t2.lang = t1.lang, t2.phone= t1.phone, t2.bw= t1.bw WHERE t2.email=t1.email AND (t2.lang='' OR t2.phone='' OR t2.bw='') ");
//wstawiamy te których nie ma w tabeli emails_all
$em2=mysql_query("INSERT INTO emails_all SELECT (null, email, lang, phone, bw) FROM emails WHERE email NOT IN ( SELECT email FROM emails_all) ");

//kasujące pierdoły

Poeksperymentuj, nie wiem czy ten INSERT sie wykona poprawnie bo nie sprawdzałem. Na pewno wydajniejsze od tych pętli.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...