Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 15.08.2007 Ostrzeżenie: (0%)
|
Mam taki zestaw tabel:
użytkownik (z uzytkownikami systemu) grupy (grupy do ktorych moze zapisac sie uzytkownik) (np A, B, C , D , E ...) uzytkownicy_grupa (relacjz zawierająca informacje o grupac do ktorych jest zapisany użytkownik) załóżmy że użytkowników jest milion a grup 10-20 więc wydajność ma znaczenie. schamt jest taki użytkownik 1 - N użytkownicy_grupa N <- 1 grupy Jak najwydajniej zapytać się o użytkowników należących do grupy A, B i C: Przychodzą mi do głowy 3 rozwiązania po 1: - totalnie lame - umieścic w tabeli użytkownicy spis grup po przecinku i użyć LIKE po 2: - wykorzystanie zmiennej typu array - to też nie wygląda na idealne rozwiązanie ponieważ jest ograniczenie przy przeszukiwaniu zmiennych array, można jedynie użyć any lub all (+ na PostgreSQL napisano Tip: Arrays are not sets; searching for specific array elements may be a sign of database misdesign. Consider using a separate table with a row for each item that would be an array element. This will be easier to search, and is likely to scale up better to large numbers of elements. ) po 3: - używanie subselecta na zasadzie
Ma ktoś jakieś lepsze rozwiązania lub umie uzasadnić które wybrać i dlaczego? Ten post edytował kris2 21.08.2007, 19:40:38 |
|
|
|
kris2 Wydajność zapytani sub select 21.08.2007, 19:38:32
Zbłąkany Rozwiązanie 1 odpada, 2 zda egzamin pod warunkiem,... 22.08.2007, 08:26:48
osiris Wydaje mi sie ze to zapytanie nie jest zbyt optyma... 22.08.2007, 10:51:10
kris2 osiris jesteś dla mnie mistrzem świata
to napraw... 22.08.2007, 18:49:45
osiris Nie ma sprawy. Kiedys postawisz mi piwo
Tez ki... 22.08.2007, 22:19:12
kris2 Po wstępnych testach moge powiedzieć że wygląda na... 23.08.2007, 07:04:07
SongoQ Rozwiazanie jest dobra, jeszcze minusem jest to ze... 23.08.2007, 08:03:52
osiris Jedna uwaga. Do moich zapytan podanych we wczesnie... 23.08.2007, 14:37:23
kris2 według mnie obciążenie wzrasta ponieważ wykonujesz... 24.08.2007, 12:20:41
osiris Cytat(kris2 @ 24.08.2007, 13:20:41 ) ... 30.08.2007, 13:40:46 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 00:29 |