Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brzina pretrage mysql baze

[es] :: PHP :: PHP za početnike :: Brzina pretrage mysql baze

[ Pregleda: 1181 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BLACK_SWORD

Član broj: 212173
Poruke: 171
93.157.198.*

Sajt: www.artwebdizajn.com


+3 Profil

icon Brzina pretrage mysql baze26.02.2012. u 18:34 - pre 148 meseci
Pozdrav!

u bazi imam npr tablicu
Code:

CREATE TABLE IF NOT EXISTS `users` (
  `id_user` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `password` char(32) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id_user`),
  UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


znači `username` sam stavio u index

e sad kad pravim sql upit kako je bolje vako:
Code:


$query = mysql_query("SELECT password FROM users WHERE username = '$username' ");

if (mysql_num_rows($query) != 0)
{
   $fetch = mysql_fetch_array($query);

   if ($fetch['password'] == md5($password))
   {
         // Ulogovan
         return TRUE;
   }
   else
   {
        // Pogrešni korisnički podaci
        return FALSE;
   }
}




ili je bolji ovakav način
Code:

$password = md5($password);
$query = mysql_query("SELECT password FROM users WHERE username = '$username' AND password = '$password' ");

if (mysql_num_rows($query) != 0)
{
    // ulogovan
    return TRUE;
}
else
{
     // pogrešni podaci
     return FALSE;
}




zanima me kako je bolje kako ce se brže pretraživati baza?


Nadam se da ste razumjeli pitanje.

Hvala.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.aDSL.verat.net.



+373 Profil

icon Re: Brzina pretrage mysql baze26.02.2012. u 18:50 - pre 148 meseci
Za ovakve upite sumnjam da ima ikakve razlike u brzini, medjutim moje licno misljenje je da se bazi prepusti sve sto moze.
Nisam neki ekspert tako da uzmi ovo s rezervom.
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.20.*



+303 Profil

icon Re: Brzina pretrage mysql baze26.02.2012. u 19:20 - pre 148 meseci
Drugi primer je bolji mnogo puta, samo mu dodaj limit tako da zna da treba da vrati samo jedan red. Zasto bi radio loop kroz sve rekorde iz baze(prvi primer), kad mozes da uradis jedan query i nadjes rezultat u roku od odmah...
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.222.202.84.customer.cdi.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Brzina pretrage mysql baze26.02.2012. u 19:44 - pre 148 meseci
Ako je baza takva da imas vise od jednog jedinstvenog identifikatora onda ne bi ni moglo da se vrti kroz sve rekorde iz baze, jer postoji samo jedan rekord sa tim usernamom (pretpostavljam da je username UNIQUE polje, barem je tako u 99.9999% slucajeva).
U prvom slucaju mozes da vidis da li postoji user i da li je pass ispravan ili ne, u drugom slucaju mozes samo da vidis da li je kombinacija ok.
Praktican primer upotrebe prvog metoda, promasi password na facebooku i pokazace ti koji si ti user, sliku i sve a reci ce ti da je pass los i ponuditi da resetujes pass. To mora prvim primerom da se uradi. Takodje, pocni da "solis" passworde a ne samo da ih ubacujes u bazu, iako ih kriptujes pre ubacivanja jer ako neko dodje do baze moze da provali koja je tacno sifra uneta koristeci rainbow tabele. A preko 90% ljudi koristi iste sifre na svim nalozima i bude belaja. Ako koristis salt za skladistenje passworda onda opet moras prvi primer.

Ako ti ove stvari nisu potrebne onda mozes sa drugim primerom, ali ako imas manje od 50 paralelnih logina u sekundi ne bi trebao da primetis nikakvu razliku u performansama.
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
93.157.198.*

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Brzina pretrage mysql baze26.02.2012. u 20:01 - pre 148 meseci
pa ako stavim upit vako

Code:
$query = mysql_query("SELECT password FROM users WHERE username = '$username' AND password = '$password' ");


kako ce sad pretrazivat bazu?

Dali mysql ima kakvu opciju da prepozna da je username u indexu pa da traži username i onda kad pronadje korisnika po username da uporedi jel password se poklapa ili ce pretrazivat obadvoje password i username?
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Brzina pretrage mysql baze

[ Pregleda: 1181 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.