@legorek: przeczytałem dokładnie co napisałeś

wykonywanie zapytań w pętli bo zapewne o to Ci chodzi nie jest zbyt rozsądne
w zupełności wystarczą 3 zapytania i trochę php do wygenerowania struktury z której łatwo uzyskasz to czego potrzebujesz dla każdego liścia i z pewnością będzie wydajniejsze niż wykonywanie zapytania w pętli
Kod
SELECT category FROM product ORDER BY date(lub ORDER BY id) DESC LIMIT 50
połączyć wszystkie wyniki przecinkami
Kod
SELECT path FROM category WHERE id IN (nasz_ciag_identyfikatorów)
rozdzielenie ścieżek i połączenie przecinkami, ew. wywalenie powtarzających się identyfikatorów
Kod
SELECT * FROM category WHERE id IN (nowy_ciag_ze_sciezek)
wyniki zapisujemy w tablicy indeksowanej identyfikatorami kategorii i dorzucamy pole direct_parent
w ten sposób możemy rekurencją w php wyjąć bez żadnych problemów całą ścieżkę kategorii danego produktu
w bazie wszystko prawdopodobnie poleci po indeksie
moim zdaniem będzie bardzo ładnie śmigać
co do Twojego rozwiązania wyobraźmy sobie poziom zagłębienia 5 i w każdej kategorii 5 podkategorii: 5 + 5^2 + 5^3+ 5^4 + 5^5 = 3905 kategorii
załóżmy że każda kategoria ma ... znaków i tu pojawia się problem bo z tym może być różnie, np.:
Komputery
- Płyty główne
- Procesory
- Układy Pamięci
- Urządzenia peryferyjne
ale może być również:
Zwierzaki
- Koty
- Psy
- Węże
- Emo

:P
Dla stronki którą ostatnio pisałem na nazwę kategorii przypada średnio (w sumie mega dużo

:P) ~ 27,06 znaku, załóżmy że na kategorie przypada 10 znaków już razem z separatorem dla równego rachunku
bez indeksu musimy przejrzeć 4000 pól o długości do 50 znaków średnio zapewne między 40-50 znakami
dla standardowego rozwiązania średnio będzie już pewnie między 20-25 znakami
2 razy krótszy ciąg to prawdopodobnie 2 razy mniej czasu...
założenie indeksu 10 znakowego (indeksy zasadniczo powinny być krótkie) rozwieje zdecydowanie więcej wątpliwości dla drugiej metody
nie dość że prawdopodobnie wyłoni 5 razy mniej wyników (pierwsza rozpozna pierwszy poziom zagłębienia, druga wyłoni na pewno 2 poziomy), to do dalszego porównania zostanie dla pierwszej 30-40 znaków, dla drugiej 10-15 znaków
śmiem twierdzić że w ogólnym zarysie, gdzie wykonywane będą różnego typu zapytania, Twoja metoda będzie wolniejsza (szczególnie gdy wziąć pod uwagę przykład mojej strony gdzie na kategorie przypadało prawie 30 znaków...)
np. wybierz wszystkie dzieci danej kategorii... to będzie IMO masakra
PS. być może rzucam jakieś bezsensowne farmazony

chętnie przeczytam jak ktoś mi wytknie jakąś głupotę, się czegoś nauczę

, zasadniczo nie jestem specem wszystko co napisałem jest na podstawie mojego "zdrowego" rozsądku