![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam w bazie danych zapisane kategorie gdzie tabela ta posiada między innymi takie nagłówki jak idCategories,idParent,name itp. Potrzebuję wyciągnąć wszystkie kategorie wraz z ich potomkami niezależnie od stopnia zagnieżdzenia aby potem móc zrobić sobie menu np. takie http://jquery.bassistance.de/treeview/demo/?1 czyli wszystkie elementy pociągnięte od razu a nie w trakcie kliknięcia na danego potomka. Wiec konstrukcje <ul> z zagłębieniami W tabeli kategorii jest około 1400 kategorii na chwilę obecną około 14 pierwszego poziomu czyli z idparent = 0, 165 drugiego i jakieś 1300 trzeciego poziomu. Elementy pobieram rekurencyjnie ale to nie jest za bardzo problemem a ilość pętli jaka musi być wykonana i jest ich w sumie w chwili obecnej około 240 000, czas wykonywania tej operacji to około 0,4 sekundy i tak nie mam za bardzo pomysłu co tu można jeszcze poprawić
Jakby ktoś miał jakis pomysł jak to zoptymalizować to byłbym wdzięczny. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Jak już to:
1) Cache - dla każdego rodzica listę ich dzieci 2) Dlaczego pobierasz WSZYSTKIE elementy a dopiero potem je "wyszukujesz" w duzej tablicy? Załóż klucz "index" na pole "idParent" w swojej bazie i wyszukuj tylko te rekordy, które potrzebujesz |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
2) Dlaczego pobierasz WSZYSTKIE elementy a dopiero potem je "wyszukujesz" w duzej tablicy? Załóż klucz "index" na pole "idParent" w swojej bazie i wyszukuj tylko te rekordy, które potrzebujesz Po to pobieram wszystkie i przelatuję w pętli aby ograniczać ilośc zapytań do bazy (których przy założeniu że kategorie trzeciego poziomu już nie mają potomków) będzie 165. Ta sama wersja ale oparta na pobieranie kategorii z bazy za kazdym razem wykonuję mi sie prawie 1,5 sekundy więc to tez odpada. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 22:13 |