[LUGOS-PROG] Mailing - PHP - MySQL

Matija Grabnar matija.grabnar at arnes.si
Thu Oct 25 09:20:33 CEST 2001


mitja.zabukovec at rs-pi.com said:
> while( $row = mysql_fetch_array( $result ) ) {
> 	if( rojstni_dan( $row["date"] ) ) poslji_mail( $row["mail"] ); 

Slaba metoda, ki brez veze vlece v PHP vse zapise iz baze. Se posebej
je to slabo, ce imas tabelo indeksirano po datumu rojstva. 

Veliko bolje je, ce naredis zadevo v stilu (Pisal bom v Perlu namesto
v PHPju, ampak saj je koda dovolj podobna)

$sth=$dbh->prepare("select * from users where rojstni_dan=CURRENT_DATE");
while (@vrednosti=$sth->fetchrow_array) {
	poslji_mail(@vrednosti);
}

Na ta nacin se primerjanje datumov v najslabsem primeru odvija v kompilirani
C kodi, ce je DB streznik na drugi masini tudi z veliko manj prometa, ce je 
pa tabela indeksirana po datumu rojstva pa tudi z veliko manj praskanja po 
disku.

Seveda je to bolj ali manj vseeno, ce imas v bazi 50 zapisov, ampak splaca
se navaditi, da se take zadeve pise pazljivo, ker to pride prav, ko tabela
naraste na stotine tisocev zapisov.




More information about the lugos-prog mailing list