Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalny schemat bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
malinka
Witam,

Zastanawiam się jaki schemat bazy stworzyć. Docelowo będzie tysiące rekordów dla każdego z obiektów. Będzie można w nich wyszukiwać i w zależności od ustawień część będzie pobierana do wyświetlenia, czasem wszystkie, czasem tylko jeden z nich. Sposób wyświetlania będzie też zależał od preferencji użytkownika (osobna tabela na przechowywanie tej relacji, tu nie mam wątpliwości). Każdy z tych obiektów ma podobne pola (typ/przeznaczenie) niektóre mogą mieć więcej/mniej.

Rozważam dwie opcje.
1. Osobne tabelki dla każdego obiektu i potem w PHP pobieranie poprzez UNION - w php tworzenie zapytania w zależności od rodzajów obiektów które mają zostać wyświetlone.
2. Jedna tabelka dla wszystkich i potem w zapytaniu coś ala kind IN()

Które z tych rozwiązań byłoby optymalne? W tej chwili mam 1 opcje, ale 2 jest dużo łatwiejsza w zaimplementowaniu jeśli chodzi o php, bo całość przerzuca się na mysql. Jednak obawiam się czy jak będzie już kilkaset tysięcy rekordów to czy nie będzie to trudniejsze do wyszukiwania jako że może chcieć wyszukiwać np tylko w 3 obiektach, albo nawet 1 a i tak musiałby się przekopać przez wszystkie rekordy, a tak tylko do odpowiednich tabelek by się odwołał. Za każde sugestie, opinie z góry dzięki.
nospor
Kilkaset tysięcy to jak pierdnięcie dla mysql. Jedna tabela, +odpowiednie indeksy i po sprawie
malinka
no właśnie nie miałam nigdy okazji pracować przy bazie która liczy więcej niż tysiąc rekordów i teraz musze nad takimi rzeczami się zastanawiać.

A czy w przypadku jak dojdzie do kilku milionów też da rade? Nie jestem aż takim optymistą, ale muszę rozważyć taką możliwość.
nospor
Też da rade

Tylko zaznaczam: muszą być prawidłowo założone indeksy
malinka
ok, dziękuje po stokroć.
indexy planowałam założyć, ale najpierw muszę o nich więcej poczytać. Bo to że to dodatkowe miejsce, powodują wolniejsze wykonywanie się zapytań typu insert, update, delete - to wiem. Tak z ciekawości, bo swego czasu widziałam w jednym miejscu że była stworzona zupełnie nowa tabelka pod wyszukiwanie gdzie były indexy założone na pola tekstowe właśnie. Jest sens? Co prawda, był to zlepek 3 różnych tabeli, ale to akurat powodowało że podczas dodawania do jednej z nich trzeba było robić niezależnie update/insert do tej pod wyszukiwanie, co trochę bezsensu mi się wydaje, ale może jest o czymś o czym nie wiem.
nospor
Sytuacja którą opisałeś mogła mieć miejsce np. gdy ktoś chciał robić wyszukiwanie pełnokonktekstowe a miał tabele typu InnoDB. Wyszukiwanie pełnokonktestowe wymaga tabeli MyIsam - dlatego ktoś musiał tworzyć kolejną tabelę na wyszukiwanie. To jedna z przyczyn.
by_ikar
Tamte pozostałe tabelki mogły wykorzystywać inny silnik (mechanizm składowania), przykładowo innoDB, żeby móc korzystać z relacji. A w przypadku dodatkowej tabeli, która była miksem tych trzech, ona z kolei mogła wykorzystywać MyISAM aby móc korzystać z wyszukiwania pełnotekstowego.

@UP ubiegłeś mnie ;>
thek
Zapewne chodzi o fakt, że tabele główne były na silniky InnoDB. Ten nie ma wsparcia dla Full Text Search (to ma silnik MyISAM), ale za to blokuje tylko na poziomie wiersza przy update/insert oraz ma wsparcie innych mechanizmów. W takim wypadku zrobiono mix obu... Teksty wywalono do jednej z tabel na silniku MyISAM (co pozwala Full Text search użyć), a reszta danych już jest w tabelach InnoDB. Dlatego poczytaj też o róznicach między silnikami, a powinno Ci się kilka tricków rozjaśnić smile.gif
nospor
Cytat
: No tak... kobieta na forum = pomoc aż 3 userów, w tym 2 modów biggrin.gif:D:D
Rany, thek, ty zboku jeden.... malinka to facet. O czym ty myślisz w pracy? tongue.gif
malinka
ach. no tak. teraz już kojarzę. teraz to dopiero muszę sobie to przemyśleć. nie tak łatwo jest zaprojektować bazę samemu po raz pierwszy z myślą o wydajności, etc etc. Małe bazy danych to pikuś, ale jeśli mówimy o portalowych rozwiązaniach to tutaj doświadczenie jest przydatne ;o)

dzięki Panowie,

offtop:
thek, czasem dobrze jest być kobietą ;o))) nospor - nie wiem o czym ty myślisz ale jestem kobietą ;oP
nospor
Wybacz malinko, ale zmylił mnie Twój męski ton wypowiedzi:
Cytat
Nie jestem aż takim optymistą,
Nie wiem, nie jestem kobietą, ale podejrzewam, ze zazwyczaj kobiety piszą: "Nie jestem aż taką optymistką" smile.gif

Cytat
"Indexy planowałam", "nie miałam nigdy", "swego czasu planowałam" to odmiana męska? wink.gif
Hehe, ja sie skupiłem na tekście, który przytoczyłem wink.gif
malinka
czasem mi się to zdarza. to wynik wiecznej pracy/studiów/liceum z praktycznie samymi facetami ;o)
ale
Cytat
"indexy planowałam założyć,"
juz napisałam dobrze ;o)
nospor
Cytat
to wynik wiecznej pracy/studiów/liceum z praktycznie samymi facetami
Hehe, ja też dużo czasu przebywam z facetami i jakoś nie mam problemów z poprawnym pisaniem..... joke wink.gif

Dobra, sorki za zamieszanie. smile.gif
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.