konto usunięte
Temat: Wydajność, a tablice
Pracuję przy serwisie, a dokładnie module forum dyskusyjnego, które posiada również system przywilejów użytkownika (przeglądanie, odpowiadanie itp.). Przy każdym odświeżeniu forum, podstrony forum, poddziału itp. następuje sprawdzenie w bazie, czy forum jest prywatne, i jeśli tak, to czy dany zalogowany użytkownik ma do niego prawa dostępu, przeglądania/odpowiadania itp.Wywołania występują bardzo często (ok. 100-150 aktywnych użytkowników cały czas). Jaka jest najlepsza droga do zoptymalizowania takiego rozwiązania? Czy wybór SELECT'em, forum_id = blabla AND private = 1 AND id_serwisu = blabla, i sprawdzanie ilości wierszy, czy być może fetch całej tabeli (id, forum_id, private, id_serwisu) do tablicy w pamięci, i następnie szybkie pojechanie po tej całej tablicy w poszukiwaniu zlepionej linijki z takimi parametrami?
Wiem, że silnik bazy bardziej męczy się przy wybiorach SELECT/WHERE, bo musi pojechać po wszystkich wierszach. W przypadku tablicy jest to samo, ale jest ona tworzona tylko raz przy odświeżeniu forum, a np. sprawdzanie ilości wierszy musiałoby się odbywać tyle razy, ile jest podforów. Poza tym, przy sprawdzaniu tablicowym pętla kończy działanie po napotkaniu szukanej linijki - wiadomo, że istnieje.
Co lepiej zastosować? Metoda z liczeniem wierszy i WHERE'ami obciążyła serwer katastrofalnie, tablicowa trochę lepiej, ale serwis wyraźnie zwolnił.
Pozdrawiam serdecznie.