Bojakki
31.12.2005, 17:32:07
Tworze baze danych i chialem sie zapytac czy w przypadku tabel w ktorych bedzie docelowo ok. 40-50 tys rekordow lepiej wszystkie mozliwe kolumny trzymac w jednej tabeli czy np. rozbic dane na 2 albo 3 tabele? Inaczej mowiac, czy lepiej jest zrobic 1 tabele z 20 kolumnami opisujacymi obiekt czy 2 tabele po 10 kolumn opisujacych obiekt?
Ktora metoda jest bardziej efektywna/szybsza dla tak duzych baz?
mike
31.12.2005, 17:35:54
No ale to w bardzo dużej mierze zależy od tego co będziesz przechowywał w tych tabelach.
I od tego jak bedziesz pytał o te dane.
Równie dobrze może być oddzielnie i razem.
Podaj więcej informacji.
Bojakki
31.12.2005, 17:47:16
Operacje na tabelach w glownej mierze to wywolanie danego rekordu 1 zapytaniem, a poznej wyswietlanie miedzy htmlem poszczegolnych wartosci roznych kolumn tego rekordu.
W kolumnach sa rozne typy danych int, double, varchar, text. czasem na intach sa robione operacje dzielenia, dodawania, mnozenia (zanim wartosci tych pol zostana wyswietlone w ostatecznej formie).
Jedynie kolumna bedzie updateowana bardzo czesto, tj. licznik wejsc na dany obiekt, pozostale kolumny raczej rzadko aktualizowane.
Bardziej zaawansowane SELECTy planuje cacheowac.
Wyszukiwarka bazuje na przeszukiwaniu pierwszych 6 z 22 kolumn.
Tak to wyglada z grubsza, jak cos jeszcze jest istotnego by to ocenic to pisz:)
SongoQ
1.01.2006, 10:52:32
Jesli beda czeste update roznych tabel to musisz sie wtedy zastanowic jak sprawe rozwiazac z indeksami, bo wtedy kazda zmiana odbudowuje indeksy itd. Wazna sprawa jest wielkosc bazy w rekordach, czy to sa setki, tysiace, miliony...... Kolejna sprawa jest dostrajanie zapytan, testy na ilosci rekordow ktore Twoja bazka teoretycznie nie powinna osiagnac.
A ja mam wrażenie, że mówimy tu nie o tym, co trzeba.
Nie ważne jest to, jakie kolumny tabela zawiera.
Ważne jest to, jakie informacje w niej mają być przechowywane.
Dlaczego?
Ponieważ jeśli wiersz takiej tabeli, mającej nawet setki pól, zawiera jedną spójną informację, np. opis 1 produktu, informacje o 1 userze itp, i przy pytaniu o te informacje będziemy zazwyczaj pobierać wszystkie te informacje, w oparciu o klucz główny, to OCZYWIŚCIE ma to być 1 tabela.
Jeśli jednak byłyby to informacje różnego typu, np. dane firmy, dane adresowe, itp, które nie spełniałyby warunków normalizacji, wtedy należy to dzielić, tak długo, aż spełniony zostanie warunek pierwszy.
A 40 - 50 tys rekodów to wcale nie jest duża baza, szczególnie jeśli są poprawnie utworzone indexy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.