![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Mialem do zrealizowania nastepujace zadanie: tabela MySQL miala nastepujaca strukture: cat_id(int) - id kategorii, cat_name(varchar50) - nazwa kategorii cat_parent(int) - id kategorii nadrzednej, jesli 0 to kategoria glowna cat_position(int) - jesli jest kilka kategorii to ta kolumna mowi o pozycji cat_dir(int) - 0 oznacza ze w tej kategorii nie ma innych kategorii, 1 oznacza ze w tej kategorii sa inne kategorie. Z innej bazy danych ajaxem importowalem dane do powyzszej tabeli a do kolumny cat_dir wpisywane bylo zero. Teraz nalezalo jedynie zaktualizowac kolumne cat_dir aby bylo wiadomo czy kategoria zawiera inne kategorie. Zrobilem to tak: SELECT cat_id, cat_parent FROM kategorie $id=$wiersz['cat_id'] SELECT cat_id FROM kategorie WHERE cat_parent='$id' $liczba=mysql_num_rows($result) if($liczba>0 || cat_parent==0) UPDATE kategorie SET cat_dir=1 To rozwiazanie dziala ale jest koszmarnie wolne. Wykonanie tego kartezjanu trwa kilka minut (okolo 50 000 rekordow w bazie). Zastanawiam sie czy jest jakis szybszy sposob na wykonanie tego zadania? pozdrawiam Grzegorz |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej jest zrobić UPDATE kategorie SET cat_dir=1 WHERE cat_parent=0 ?
Chyba, że to nie o to chodzi? Ten post edytował IceManSpy 31.12.2010, 17:37:56 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
to jest rozwiazanie poprawne ale tylko dla kategorii glownych (bo one napewno maja inne kategorie w sobie). pozostaje kwestia sprawdzenia wszystkich innych kategorii czy zawieraja w sobie jakies kategorie....
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To czy to trwa krótko czy długo zależy od struktury tabeli. Masz tam jakieś indeksy? -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
indexy sa tyko na cat_id
czy na pozostale kolumny tez zakladac ? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
na cat_parent też się przyda. Ale oczywiście wszystko zależy od znaczniej większej ilosci czynników.
I wtedy zamiast Kod cat_parent != 0 daj Kod cat_parent > 0
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 23:14 |