Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Osobna tabela dla każdego użytkownika
Forum PHP.pl > Forum > Bazy danych
Smertius
Załóżmy że mamy aplikację z której korzysta 1000 użytkowników i każdy użytkownik posiada 5000 zapisanych w bazie danych wiadomości tekstowych(dajmy na to 10-20 kb każda). Użytkownicy dość często korzystają z przeszukiwania swoich wiadomości wg określonych kryteriów. Użytkownicy mają dostęp tylko i wyłącznie do swoich wiadomości.

W tym momencie nasuwa się pytanie. Czy wydajniejszym rozwiązaniem jest utworzenie jednej tabeli ze wszystkimi rekordami? Czy może dużo lepszy rozwiązaniem jest utworzenie osobnej tabli dla każdego użytkownika?


Przykładowe zapytanie dla jednej tabeli:
  1. SELECT * FROM wiadomosci WHERE user_id=150 AND data_dodania=21,11,09

Przykładowe zapytanie dla osobnej tabeli dla każdego użytkownika:
  1. SELECT * FROM user_id150_wiadmomosci WHERE data_dodania=21,11,09


Które rozwiązanie wg was jest lepsze.
maly_swd
Jedno i drugie ma swoje plusy i minusy:)

erix
Cytat
Czy wydajniejszym rozwiązaniem jest utworzenie jednej tabeli ze wszystkimi rekordami? Czy może dużo lepszy rozwiązaniem jest utworzenie osobnej tabli dla każdego użytkownika?

I tak MySQL, przy pewnych przeszukiwaniach, sam tworzy osobne tabele tymczasowe. Więc z projektowego punktu widzenia, tworzenie dla każdego z nich osobnej tabeli jest bez sensu. winksmiley.jpg
Smertius
A inne systemy bazodanowe? PostgreSQL, MSSQL itp.
DziadekG
jeśli używasz MyIsam i będzie zalogowanych jednocześnie wielu userów to oddzielne tabele mogą być bardziej wydajne.
Natomiast przy InnoDB to raczej nie ma znaczenia i użyłbym jednej tabeli.
przynajmniej tak mi się wydaje.
mad/
Ja, jestem za jedną tabelą, przy wielu byłby problem z tym, że już mieszamy projekt tabeli z jej danymi, nie można zrobić tak, by struktura danych (ilosć tabel) był zależny od zawartości tych danych (ilości userów), to zmieniałoby za każdym razem ilosć tabel, utrudnienie w konserwacji.
prachwal
Cytat(Smertius @ 12.11.2009, 20:15:13 ) *
A inne systemy bazodanowe? PostgreSQL, MSSQL itp.


nie ważne jak baza danych, robienie tabeli dla każdego usera jest błędem

np. poindeksuj jakieś pole w tych tabelach - to jakiś koszmar i makabra
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.