[ extramedia @ 28.12.2006. 15:23 ] @
Pozdrav svima.

Kao shto i sama tema glasi, dakle gde ce se brze izvrsavati query, nad jednom tabelom od 1M recorda ili nad 1000 tabela sa po 1K recorda?

Potrebno je na primer logovati (beleziti) akcije tamo nekog korisnika.... e sad, akcije se mogu cuvati sve u jednoj tabeli (i kasnije se iscitavati pomocu korisnikovog ID-a), a moze se praviti po jedna tabela za svakog korsinika gde bi se jednostavno iscvitavali svi podaci iz korisnikove tabele.

poz.
[ extramedia @ 28.12.2006. 15:38 ] @
da pojasnim.......

prilikom citanja podataka iz tabele, citali bi se logovi za SAMO JEDNOG usera u datom trenutku, pa stoga ja mislim da bi se brze izvrsavao query:

SELECT * FROM userova_tabela

nego query:

SELECT * FROM velika_tabela WHERE velika_tabela.user_id = tamo_neki_id_usera


ali opet... interesuje me i drugo misljenje.
[ misk0 @ 31.12.2006. 09:55 ] @
Nisam nikad testirao da bih ti mogao reci rezultate, ali 1000 identicnih tabela mi djeluje kao suludo rjesenje.
[ extramedia @ 31.12.2006. 11:50 ] @
Tja... zivi bili pa testirali....

Meni nekako logicno deluje da ce query:

SELECT * FROM mala_tabela

brze da radi, s obzirom da mala_tabela (predpostavimo) ima 1000 record-a nego query:

SELECT * FROM velika_tabela WHERE tamo_neki_uslov

nad tabelom od 1M recorda.

Ako neko ima neko misljenje, bilo bi super da ga cujemo.
[ ventura @ 31.12.2006. 13:03 ] @
Mislim da će veća tabela dati brže rezultate, zbog indeksiranja.
[ Dragan @ 02.01.2007. 17:38 ] @
Svakako jedna tabela, 1M rekorda i nije nesto...Sto se tice index-a, verovatno ces morati userID da ukombinujes sa jos nekom kolonom - recimo sa datumom jer da bi server koristio index on mora da bude dovoljno selektivan. Mislim da od verzije 5.1 MySQL podrzava particionisane tabele, sto je dobro resenje za tabele sa mnogo podataka...Verovatno ce biti tesko particionisati po userID jer pretpostavljam da nemas fiksan broj user-a tj. oni se dodaju sto iziskuje dodavanje novih particija u tabelu...a i ne znam kako bi se stvar ponasala sa toliko particija...mozes particionisati po datumu recimo na mesecne particije (ako ti datum figurira u query-ima).

Nisam siguran da ces sa 1000 tabela x 1000 rekorda imati brzi odziv, jer na tako mali broj rekorda server cesto ode u full scan i ne koristi indexe. Ono sto je bitno je koliko podataka iz neke tabele server drzi u memoriji a za koliko mora da skoci na disk. Sa 1000 razlicitih tabela tesko da ce caching mehanizam raditi dobro, a 1M rekorda lako moze da se digne u memoriju (ili bar veci deo).


[ simor @ 20.01.2007. 10:41 ] @
Sto jednostavno ne napravis test upit i napunis bazu nekim test podacima, pa probaj obe verzije...

I postuj ovde rezultate, svima bi nam koristilo!
[ dsmr @ 01.03.2007. 17:19 ] @
Da bi neki RDBMS bio dobar jeste i izbegavanje pravljenja 1k istih tabela. Ako RDBMS ima dobar sistem indeksiranja (i pod uslovom da si napravio dobar index) razlika bi trabaloda bude ekstremno mizerna . Ako Dodjes do zakljucka da je bolje 1k*1k onda nesto nevalja sa mysql (to bi bilo tesko za poverovati)