![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 25.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam pewien dylemat.
Postanowiłem napisać forum jako dodatek do pewnego CMSa, do którego jeszcze nie ma forum :-) Upraszczajac - mam tabele uzytkownikow, for, grup użytkowników, tabele z dostepami (id, nazwa, czytanie, pisanie, etc) oraz tabele z mapami: a) forumAccess - forumId -> groupId -> AccessId (IMG:style_emoticons/default/cool.gif) groupMap - userId -> groupId. Zalozenie - każdy użytkownik może być przypisany do wielu grup. Czyli mając 1 usera, przypisanego do 2 grup, mając 100 for, dostaje 200 rekordów. Przy 100 uzytkownikach osiągnąć mogę już liczbę 20 000 rekordów. Oczywiście pobierajac listę for, pobieram tylko 100 rekordów z tych 20 000 możliwych (maksymalne wartości dla danego użytkownika w danej chwili). Postanowiłem, ze posile się widokami. I tu moje pytanie - czy to dobre podejście do mojego zagadnienia? Mniej wiecej to będzie wyglądało tak: 1. Zapytanie wyciagajace listę for. 2. Na zapytaniu mam Joina na widoku, który pobiera mi maksymalne wartości z drugiego widoku. Pobiera ono tyle rekordów ile jest for. 3. W tym drugim widoku planuje jeszcze dodać jeden Select poprzez Union All. Czy to aby nie zapcha mi bazy czasem wykonania zapytania? Myślałem, aby stworzyć tabele z tymi wynikami, które otrzymuje poprzez widoki i dodawanie/edycje/usuwanie oprogramowac Triggerami. Ale czy to byłoby słuszne? Tabela po czasie miałaby masę rekordów, a ja wybieram dla konkretnego Usera u Forum. Jak z indeksami w widokach? Dzialaja? I czy działają jeśli zrobię Union All w widoku? Czy jak mam w zapytaniu czasem Where/Join na UserId, czasem na ForumId, a czasem na oba pola, to powinienem zastosować indeksy pojedyncze czy złożone, a może jedne i drugie? Z góry dzięki za odpowiedzi na nurtujace mnie pytania i wątpliwości. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 06:33 |