Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]pytanie o strukture - 1 tablica czy 2
ChrisB
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 4
Dołączył: 13.01.2004
Skąd: Bielsko-Biała

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


witam

mam aktualnie 2 tablice
A-> 8pól głównie numerycznych - wszystkie "małe" z dużą ilością rekordów (w przyszłości milion+)
B-> 2pola - 1 - link do tablicy A, oraz drugie pole - text - zawartość może zajmować do 1kb

i teraz: NIE KAŻDY rekord z tablicy A ma swój rekord w tablicy B, ale KAŻDY rekord w tablicy B ma swój odpowiednik w tablicy A.

pytanie brzmi, zostawić to rozdzielone na dwie tablice, czy może połączyć je razem, zostawiając około 50% rekordów tekstowych pustych.
pytanie jest czysto wydajnościowe - które rozwiązanie będzie szybsze przy milionach rekordow w tablicy A i gdzies połowie mniej rekordów w tablicy B.


--------------------
gragieldowa.pl
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Połącz w jedną tabelę. Selectuj tylko to co potrzebujesz (nie rób select *). Skup się na indeksach. Zakładaj je tylko na najważniejszych polach bo bardzo wydłużają czas sortowania ewentualnego temp table. Dobierz dobrze typy kolumn:

tutaj masz ile zajmują miejsca:
http://dev.mysql.com/doc/refman/5.0/en/sto...quirements.html
a tutaj ile sie miesci w numericach
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

im mniej będzie zajmował pojedynczy rekord, tym szybciej bedzie wszystko działało.
Go to the top of the page
+Quote Post
ChrisB
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 4
Dołączył: 13.01.2004
Skąd: Bielsko-Biała

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


indeksy, select po polach - to już opanowałem, zmieniłem na jedną tablicę, ale jak mam być szczery to nie przekonałeś mnie do końca smile.gif

Cytat
im mniej będzie zajmował pojedynczy rekord, tym szybciej bedzie wszystko działało.

właśnie dlatego bo załóżmy, że tablica A będzie miała 1.000.000 rekordów bez pola text, natomiast tablica B 100.000-500.000 - ciężko mi teraz określić ile dokładniej ale nie więcej niż 50% niemalże napewno, no i - jeden rekord tekstowy z tablicy B będzie większy "objętościowo" dobre 5-10 razy niż jeden rekord z tablicy A - dlatego wg mnie (nie mam żadnych obliczeń by to poprzeć ani nawet nie wiem jak się za takowe zabrać bez czekania aż tablica urośnie) rozdzielenie dałoby przyrost wydajności.


--------------------
gragieldowa.pl
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: 21.08.2025 - 17:32