![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Mam to "szczęście", że muszę po poprzednikach poprawić zapytania w sklepie internetowym. W znacznym stopniu baza danych zostaje obciążona czego efektem jest wydłużony czas ładowania się strony. Zapytania wyświetlające listę produktów w sklepie:
zapytanie zostaje wywołane dwa razy: 1 dla listy produktów, 2 (jak wywnioskowałem) dla paginacji (ilość stron produktów). Indexy założone na tabele (nazwa tabeli - pola indexow): zestawy - id_zest(pk), id_kat, zdj, symbol; zestawy_jezyki - id_zest_l(pk), id_zest, id_lang, nazwa, opis, ivona(nie uzywane juz w sklepie pole w bazie), ivona_url(jak w przypadku ivony) zestawy_cechy - id_cech_l(pk) & id_zest, id_cech_l(pk), id_zest, wartosc produkty - id_prod(pk), id_user, id_vat, id_produc, id_zest, id_rodz, data_add, idx_stan, detal produkty_jezyki - id_prod_l(pk), id_prod, id_lang kategorie_zestawy - id_kat_zest(pk), id_kat & id_zest kategorie - id_kat(pk), id_user, id_gr Wszystkie tabele to MyISAM. Jakie są wasze sugestie co do optymalizacji tego zapytania ? Ten post edytował Petre 3.01.2013, 10:16:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Daj może wynik EXPLAINa. Na pierwszy rzut oka spojrzałbym czy są pozakładane indeksy na kolumnach, których używasz w złączeniach. Nie chodzi o indeks na każdej kolumnie z osobna, ale o indeks na N kolumnach, czyli np.:
tutaj wypadałoby dodać 1 indeks na obu kolumnach. Zastanów się również czy nie ma możliwości pozbycia się tego grupowania. Ot tak pewnie nie, ale może warto dodać gdzieś dodatkową kolumnę przechowującą wartość MAX(p.data_add). Wartość kolumny można by aktualizować triggerem by działo się to automatycznie. No ale tutaj wkraczamy już w modyfikację struktury bazy więc teren robi się grząski (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 06:05 |