Brže pronalaženje korisnika u mysql bazi

Pozdrav!

U bazi imam tablicu

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 je stavljen u index i jedinstveni je (UNIQUE KEY)

e sad kad oću naprimjer da napravim da se korisnici loguju na sajt kako je bolje provjeravat dali je korisnik unio korisničko ime i passwoed ispravan?

prvi primjer

znači u bazi pronadje redak po korisičkom imenu i onda mu uporedi password

drugi primjer

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

Hvala.

U teoriji bi trebao biti onaj prvi primjer (s obzirom da uspoređuje samo jednu vrijednost, a u drugom primjeru dvije) i vjerojatno i jeste tako međutim mišljenja sam da se ne radi o nekoj prevelikoj razlici.

Ono što bih ti volio napomenuti je da valja koristiti MySQL bonton, a jedna od stvari koju bi upotrijebio ovdje je limitiranje rezultata.

Umjesto tvog upita

bih upotrijebio

Zašto? Ako koristiš upit (query) koji si ti napisao onda će engine pretražiti cijelu bazu podataka, neovisno kada je pronašao željeni rezultat (odnosno nečiji username). Ako staviš na kraju upita “LIMIT 1”, onda će engine prestati tražiti po bazi podataka onda kada nađe jedan rezultat.

Logično je, ali valja napomenuti, da je ovo poželjno koristiti samo onda kada znaš da se treba vratiti točno jedan (ili nijedan) rezultat, kao što je korisničko ime prilikom prijave na neku web stranicu.

Ako već nisi, preporučam ti da pročitaš 20 najboljih MySQL primjera iz prakse.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja