Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Osobna tabela dla każdego użytkownika, Czy takie rozwiazanie ma sens?
Smertius
post
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


Jedno i drugie ma swoje plusy i minusy:)



--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Smertius
post
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

Ostrzeżenie: (0%)
-----


A inne systemy bazodanowe? PostgreSQL, MSSQL itp.
Go to the top of the page
+Quote Post
DziadekG
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 1
Dołączył: 12.11.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mad/
post
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 7.10.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
prachwal
post
Post #7





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:48