Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jaka tabela jest wydajniejsza?
Forum PHP.pl > Forum > Bazy danych > MySQL
Bojakki
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
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
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
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.
DeyV
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.