Pozdrav svima nakon duzeg vremena
@Igor: koliko sam shvatio tvoje potrebe, ti jos nemas tacno definisan koncept tvoje aplikacije - dakle moras koristiti
agilne metode pri razvoju te aplikacije, sto samo po sebi iskljucuje donosenje odluke o konacnom izgledu/dizajnu/strukturi aplikacije i baze.
Kao sto rece neko (misk0 cini mi se) - ne postoji "silver bullet" rjesenje, nego ces morati zagrijati stolicu, te metodom "trial & error" (odnosno "generate & test" iliti "guess & check") doci do najoptimalnijeg rjesenja.
Evo ti par usputnih savjeta onako iz rukava:
- gledaj da ti broj tabela ne predje broj korisnika

, znaci tabele kreiraj svrsishodno i ne razbacuj se
- rasporedi tabele u vise grupa i imenuj ih sa odgovarajucim prefixom (chat_*, user_*, i td.), radi lakseg pregleda
- ako mozes, koristi particije - npr. particioniras tabelu sa korisnicima po pocetnom slovu imena/prezimena ili po godini rodjenja; particioniras tabelu sa chat porukama po datumu (Oracle ima i mogucnost kompozitnog particionisanja, pa mozes prvo particionisati po datumu i onda subparticionisati po korisnickom ID-u, tj. "Range-Hash composite partitioning" ili drugacije, zavisi o konceptu tvoje aplikacije); ne znam kakvo je stanje sa MySQL-om po pitanju particionisanja, jer sam totalno zapostavio MySQL zadnjih godina

- koristi indexe kada ti je "
selectivity" za zadane kolone veoma visok
- koristi full table scan, kada imas neku batch job operaciju, koja obradjuje veliki broj redova u zadanim tabelama
- koristi uskladistene procedure
itd.
Eto nabrzaka nesto, cisto da se vratim u forumsku formu.
