Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Sortowanie Wg trafności
Taifun
post
Post #1





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

Ostrzeżenie: (10%)
X----


witam,
mam tagi np.
-tag1
-coś tam 2
-test 3

I chcę znaleźć artykuł, który posiada najwięcej danych tagów (np. artykuł , który ma wszystkie tagi wyżej wymienione jest pierwszy)
Jak to osiągnąć najskuteczniej?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Problemem pomysłu wNogachSpis jest aktualizacja danych. W przypadku edycji musisz bowiem pobrać wiersze tagów gdzie ów artykuł jest i w razie czego go z nich usunąć i ewentualnie dodać do innych, uprzednio sprawdziwszy, czy taki tag już nie istnieje. Całość więc wygląda tak:
Pobierz wszystkoie wiersze tagów powiązane z artykułem. Sprawdź czy obecnie wpisane się pokrywają. Jeśli w nowych jakiś jest inny to znajdź czy jest w bazie ten tag i dodaj artykuł do niego. Jeśli w starych tagach jest jakiś, którego nie ma w nowych to usuń artykuł ze starych. W efekcie rozwiązanie to ma sens jedynie dla baz gdzie retencja tagów nie jest duża, bo może dojść do sytuacj, że większość operacji to będzie aktualizacja struktury tagów. A to Ci zarźnie maszynę bo całe działania masz rozbite zarówno na php jak i bazę. Wyszukiwanie identycznie, tylko że tu zamiast insert-update masz same selecty. Musisz przemyśleć co będzie wydajniejsze.

A co do sytuacji gdy masz kolumnę tagi: "tagA, tagB, tagC" to owszem, masz nadmiarowość, ale czasem taka jest lepsza w ostatecznym rozrachunku niż optymalizacja na siłę by baza nie miała redundantnych danych i cudowanie choćby z tabelami łączącymi. Możesz wylać dziecko z kąpielą i dopiero wtedy bazę zajedziesz niesamowicie.

Sam powiedz... Dla forum mam za każdym zapytaniem liczyć ile postów ma użytkownik czy lepiej tę liczbę zapisać w jego profilu? A tu mamy podobny przypadek. I tak - rozumiem Twoje podejście i rozumiem, że jest lepsze niż niektóre pomysły "optymalizatorów" (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 07:25