I have IT

Loading

Nieoptymalne ps_facetedsearch w prestashop przy dużej liczbie kombinacji.

Nieoptymalne ps_facetedsearch w prestashop przy dużej liczbie kombinacji.

Zgłosił się do mnie klient, który narzekał na zbyto wolne działanie sklepu internetowego opartego o Prestashop. Sam sklep nie był przesadnie duży ( ok 4000 produktów ) i nie miał nadmiernego ruchu. Po analizie okazało się że kodem powodującym problem była wtyczka ps_facetedsearch. W przypadku gdy produkty mają wiele kombinacji – a tak było w tym przypadku – wtyczka ta powoduje nadmierne obciążenie bazy danych próbując wykonać zapytanie które w tym konkretnym przypadku szło w sekundy. Kod odpowiedzialny za zapytanie generowane przez ten moduł znajduje się w PrestaShop\Module\FacetedSearch\Adapter\MySQL, a konkretniej w funkcji useFiltersAsInitialPopulation, która zbiera więcej danych niż większość sklepów potrzebuje. Po wyłączeniu z setSelectFields pól quantity, id_manufacturer, condition oraz weight sklep dostał nowe życie, choć kluczowym polem jest quantity.