![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam pytanie do odnośnie optymalizacji zapytania / funkcji. Otóż potrzebuję zrobić w sklepie sugerowane produkty dla tych które zostały wcześniej zakupione. Moje zapytanie wygląda tak:
Prostymi słowy: pobiera koszyki (wszystkie produkty są w koszyku - nawet te już kupione) gdzie był dany produkt i wyświetla 3 inne posortowane częstością kupienia. Niestety przy 100 produktach w sklepie, a 1000 w koszykach zapytanie zaczyna bardzo zamulać. Czy mogę to jakoś zoptymalizować lub możecie poradzić jak sami z taką funkcją sobie poradziliście? Z góry dzięki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 9.05.2013 Ostrzeżenie: (10%) ![]() ![]() |
a jestes pewien, że to zapytanie zamula? tzn. konkretnie zapytanie z bazy?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
korzystaj z EXPLAIN do debugowania zapytań SQL
![]() -------------------- Nie udzielam pomocy poprzez PW
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak, na 100% to to zapytanie. Jak wyczyszczę koszyk to wszystko działa płynnie.
Z drugiej strony jak właśnie było to 1000 rekordów to pierwsze wywołanie tego zapytania trwało 7sek (dosłownie), a po wykonaniu tego samego zapytania ponownie (przy tym samym ID) wykonywało się od razu. Przypuszczam, że wtedy wczytuje z cachu mysqlowego. EXPLAIN i profilowanie nic nie dawało, bo wrzucając to zapytanie przez phpmyadmina wyskakiwał biały ekran. Przy show profile for query wyskakuje tysiące małych pakietów(?). Każde po ułamek sekundy, ale razem składają się na te 7 sek. Sam serwer stoi na konkretnej maszynie i raczej nie jest to problem sprzętowy. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Tak napisane zapytanie musi powodować problemy!
Zacznij je pisać od nowa. Nie używaj również gwiazdki, a wymień nazwy pól Twoje zapytanie będzie się zaczynać tak
w tym zapytaniu NIE BĘDZIE frazy ... IN (SELECT... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:02 |