Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] optymalna struktura bazy
!*!
post 15.06.2010, 11:54:09
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak się zastanawiam jak optymalnie rozwiązać taki motyw:

Posiadam jedną bazę mysql i ok 1250 przedsiębiorstw w bazie. Mam możliwość przebudowy tego i chciałbym to jakoś zoptymalizować na zasadzie:

Baza > W niej tabele, gdzie każda tabela to nazwa przedsiębiorstwa > W tych tabelach odpowiednie wpisy danych o przedsiębiorstwie + dodawane kolejno jakieś inne informacje ok 600 wpisów.

Czy takie rozwiązanie byłoby dobre? Tworzyć osobne tabele dla każdego przedsiębiorstwa i do tej tabeli umieszczać dane jakie przedsiębiorstwo wprowadzi (może być ich dużo). Czy MySQL będzie bardziej wydajne gdy będzie bezpośredni dostęp do tabeli równoznaczny z docelowym przedsiębiorcą.

Czy może zrobić tabele "przedsiębiorcy", i w niej umieszczać poszczególne firmy, zrobić też tabele "dane" i tam umieszczać wszystkie dane wszytkich przedsiębiorstw, a później odwoływać się np. przez ID ?

Jaki sposób byłby bardziej optymalny?

Ten post edytował !*! 15.06.2010, 11:59:49


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
magnus
post 15.06.2010, 12:06:09
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 15
Dołączył: 15.11.2007
Skąd: Nowogród Bobrz.

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


Osobne tabele dla każdej firmy to niezbyt dobry pomysł (oględnie mówiąc winksmiley.jpg). Wyobraź sobie np. zrobienie listy wszystkich firm.
Jeśli wpisywanych danych jest dużo, to lepiej podzielić je na kilka tabel grupując wg jakichś kryteriów (np. osobno dane adresowe, osobno inne). Tylko to sensownie podzielić, żeby potem nie było trzeba dawać dużo join'ów.
Zasadniczo dobrze poindeksowana baza lepiej sobie radzi z większą ilością prostych rekordów, niż z mniejszą ilością ale rekordów z dużą ilością kolumn.


--------------------
Efemental.pl - nasz punkt słyszenia :: recenzje :: tylko metal!
Opensource'owy klon Cantra: http://github.com/magnax/Simtr
Go to the top of the page
+Quote Post
Fifi209
post 15.06.2010, 15:14:19
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jak najbardziej rozwiązanie drugie, właśnie do tego służą relacje w bazach danych ;]

Przy rozwiązaniu pierwszym jest to nierealne - wyszukaj np. firmę, która jest na ulicy takiej i takiej, a numer kontaktowy to taki i taki ;]


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
lukasz_matysek
post 16.06.2010, 06:27:24
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 25.03.2010

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


Do tego nie obawiaj się, że dane 1200 przedsiębiorstw zawarte w dwóch tabelach jakoś "zapchają" ci bazę (piszę o tym bo pytałeś o optymalizację). Przeprowadź sobie prosty test, zrób inserta, wrzucając losowe dane do tabeli o takiej strukturze jaką masz w tej swojej bazie firm. Wykonaj tego inserta tak z 500 000 razy, a potem zacznij się bawić selectami wyszukując informacje. Popatrz sobie na czasy wykonywania selecta, a otrzymasz swoją odpowiedź w temacie optymalizacji smile.gif

ps - nawet jeśli coś by zwolniło, zawsze pozostają jeszcze indeksy smile.gif
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 Wersja Lo-Fi Aktualny czas: 14.07.2025 - 16:03