[php - mysql] Query enorm traag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Ik gebruik het volgende scripje om 2 tabellen op basis van email adres samen te voegen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$get_1st_table = mysql_query("SELECT distinct(ml_email), ml_mask, ml_luitslag, ml_uitslag_active FROM tbl_mailinglist");

WHILE($array_1st_table = mysql_fetch_row($get_1st_table)) {
    switch($array_1st_table[3]) {
        case 'J':
            $privacy_uitslag = 1;
        break;
    
        case 'N':
            $privacy_uitslag = 0;
        break;
    }
    
    $email = chop($array_1st_table[0]);
    
    mysql_query("UPDATE tbl_mailing_final SET ml_mask = ml_mask + $array_1st_table[1], ml_reject_uitslagen = $privacy_uitslag, ml_last_uitslag = $array_1st_table[2] WHERE ml_email = '$email'") or die (mysql_error());
    
    $rows = mysql_affected_rows();
    
        if($rows < 1) {
            mysql_query("INSERT into tbl_mailing_final (ml_email, ml_mask, ml_last_uitslag, ml_reject_uitslagen) values ('$array_1st_table[0]', '$array_1st_table[1]', '$array_1st_table[2]', '$array_1st_table[3]')");
        } else {
            echo($email);
        }
}


Tabel 1 is zon 8000 records
Tabel 2 is 200.000 + :)

Het script draait nu al bijna anderhalf uur dit lijkt me erg lang.

Heb ik misschien iets inefficient aangepakt :?

Aan de machine kan het naar mijn idee niet liggen, dikke Pentium III (1100Mhz geloof ik) met een GB geheugen.

Ja man


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

heb je een index op je email-veld staan?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
|:( niet dus 8)7

stomme fout zeg :P

Ja man


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 18-09 18:07

TheDane

1.618

ik weet niet hoe 't in mysql zit, maar in oracle beinvloedt de grootte van je rollbacksegmenten BEHOORLIJK zwaar de snelheid van je queries. Voer maar eens 1 op de duizend records een commit; uit, dan gaat 't (in oracle) al een STUK sneller.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

jah, bij de eerste query gebruik je je emailadres met distinct, en daarna een update where email = ..
Beide queries zouden stuk sneller gaan met een index imho :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Dat scheelde inderdaad zo'n 89 minuten en 55 seconden :P

Ja man

Pagina: 1