Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ilość tabel a wydajność
delphiak
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2007

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


Witam

Podczas tworzenia bazy danych pewnego serwisu natknalem sie na nastepujacy problem:
Serwis ma mniej wiecej taka strukture:
- ma N kategorii ( n ~ 100-300 )
- wszystkie kategorie maja kilka wspolnych cech (pol) + wiekszosc z nich ma kilka cech indywidualnych (od 0 do 4 cech)
- kazda kategoria ma przypisane jakies produkty (powiedzmy nie wiecej niz 10'000 kazda)

Problem polega na tym, ze na poczatku zaprojektowalem baze ktora miala tabele 'kategorie' ktora laczyla wszystkie wspolne cechy kategorii, a nastepnie dodatkowa tabele 'atrybutu', ktora zawierala dane w stylu: nazwa, rodzaj i do ktorej kategorii nalezy.
Jednak natknalem sie problem odczytu takiej bazy. Nie mozna tego zrobic sensownie jednym zapytaniem. Przy uzyciu joinow, dostaje za kazdym razem jeden atrybut i cala strukture kategorii. Spory narzut. Natiomast pobieranie najpierw wszystkich produktow a potem wczytywanie dla kazdego jego atrybutow osobnym zapytaniem wydaje sie jeszcze bardziej bezsensu.

Pomyslalem, wiec ze bede tworzyl tabele dynamicznie, dla kazdej kategorii osobno. Wtedy odejdzie problem łaczenia tabel oraz wyszukiwanie danych po atrybutach tez bedzie duzo prostsze.

Moje pytanie teraz brzmi: czy baza skladajaca sie z powiedzmy 300 tabel a zawierajaca te same dane co powiedzmy baza z 20 tabelami bedzie wolniej obslugiwana przez MySQL ?
Wydaje mi sie, ze liczba tabel w bazie nie powinna miec znaczenia, ale to tylko moje przeczucie i chcialbym zeby wypowiedzial sie ktos kto wie troche bardziej jak dziala MySQL.
Pozdrawiam

Ten post edytował delphiak 26.08.2009, 10:00:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
zzeus
post
Post #2





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Myśle że stowrzenie kiluset tabel i ich późniejsz obsługa będzie o wiele bardziej problematyczna niż napisanie odpowiednich zapytań z klikoma joinami. Zdecydowanie pierwsza opcja.
Go to the top of the page
+Quote Post
delphiak
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2007

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


Ok. Zagalopowalem sie. Ten sposob jest kompletnie bezsensu. Tak sie skupilem na wyszukiwani danych ze wzgledu na ich atrybutu szczegolne, ze zapomnialem, ze rozbiajac to na kilka tabel, nie bede mial mozliwosci sensownego wyszukiwania wg ich cech wspolnych. Temat zatem nieaktualny.

Przy okazji doczytalem tez, ze mysql tak jakby posiada caly czas 'otwarte' najczesciej uzywane tabele. Wiec korzystanie z wielu tabel, albo spowolni operacje (bo bedzie trzeba czesto otwierac i zamykac tabele) albo da spory narzut w pamieci, gdyz wiecej tabel bedzie musialo byc caly czas otwartych.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 04:15