![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam 3 tabele, z których potrzebuję wyciągnąć dane
Produkty - z niej potrzebuję ID produktu (w bazie 6000 rekordów) Dokumenty - dokumenty do produktów - potrzebuję status dokumentu ( w bazie ok 5000 rekordów) Zamówienia - tutaj też potrzebuje tylko ID zamówienia jeśli istnieje do danego produktu ( w bazie około 15 000 rekordów)
Pokrótce: Wyciągam tylko te produkty, które nie mają zamówienia lub dokument nie jest zaakceptowany Zapytanie działa w miarę poprawnie, jest to lekkich poprawek bo dokumentów moze być więcej niż jeden i trzeba sprawdzić czy ostatni jest zaakceptowany, ale ważniejszym problemem jest to, że takie zapytanie SQL robi w okolo 2 minuty. Macie jakieś pomysły jak to zoptymalizować? Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dodatkowo wypadaloby zalozyc indeksy na pola laczace oraz szukane |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
To może zadam dodatkowe pytanie, na id oczywiście mam primary, ale na pola status nie mam ideksu, to myślisz żeby lepiej założyć indeks na pole status w dokumentach (korzystam z tej tabeli w wielu różnych miejscach programu) , czy lepiej stworzyć nowy widok i zapytanie kierować do widoku ?
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No jesli wyszukujesz po STATUS to raczej byloby milo miec na to pole index.
Widoki sa ble, szczegolnie te w mysql |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Troche sie poprawiło ale 36 sekund to przynajmniej o jakies 30 za długo, jeszcze założę indeksy i zobacze, jak nie bedzie poprawy to chyba mi zostanie obrobienie wszystkiego w php dodam tylko ze kiedy zapytania te są osobno to wszystko ładuje w przeciągu milisekund
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
36 sekund to pare razy szybciej niz 120 sekund (IMG:style_emoticons/default/wink.gif)
Zawsze mozesz uzyc EXPLAIN i sprawdzic co dokladnie kuleje. Jesli i to nie pomoze to warto by najpierw joinowac ZAMOWIENIA potem DOKUMENTY, ale DOKUMENTY po produkcie z zamowien. Unikniesz mnozenia rekordow |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
samo to 8 sec
to 0.047 sec
ale to już bez mnożenia 39 sec ropson jak zwykle pomocny, od razu powinienem dodać indeksy,:
0,125 sec |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:59 |