[ 00000110001 @ 03.12.2009. 13:01 ] @
Imam jedno vise onako teorijsko pitanje.
Radi se o FIREBIRD bazi i o brzini ucitavanja podataka tj. SELECT-a
Recimo da imam jednu tabelu koja ima 20 polja (INTEGER, DATE, NUMERIC, VARCHAR itd.).
E sad u ovoj tabeli postoje 4 polja - VARCHAR(80), VARCHAR(80), VARCHAR(80), VARCHAR(40)
Tabela ima npr. nekoliko hiljada unosa po danu.

E sad ja hocu da izbacim ova polja u posebnu tabelu jer se ova polja koriste vrlo rijetko, mozda 1%
Znam da bi s tim baza bila manja, ali problem je sto osobi koja je zaduzena za baze treba dokazati da je to i bolje :)
E tu dolazi moje pitanje.
Da li ova promjena znaci izbacivanje ovih polja u posebnu tabelu pomaze da se upiti brze izvrsavaju, prije svega SELECT.
Naravno da ne koristim nigdje SELECT * ...

Unaprijed havala.
[ schild @ 03.12.2009. 15:40 ] @
Teorijski bi bilo ispravnije kada bi ta polja bila u posebnoj tabeli. Na prvi pogled mi zvuci kao da ta baza bas nije "normalizovana".
Ali sto se tice same brzine selecta, mislim da tu neces dobiti skoro nikakvo ubrzanje.

Ako bas hoces da se uveris, napravi kopiju baze, obrisi ta 4 polja. Onda uradi backup/restore obe baze, da vidis kolika je razlika u velicini. A onda mozes uporediti i brzine upita.
[ dogriz @ 04.12.2009. 06:20 ] @
Ukoliko su u najvećem broju recorda ta 4 varchar polja null, onda gotovo da neće biti razlike u izvršavanju upita sa njima ili bez njih. I još nešto, baza ne bi bila manja ako se ta polja izbace iz tabele.