![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Otóż tworze porównywarkę cen gdzie której chce połączyć 2 tabele i wyciągnąć z niej dane. Same zapytanie nie jest jakoś skomplikowane ale mimo tego wykonuje się strasznie długo przy dużej ilości rekordów w bazie. Próbowałem już wielu rzeczy, zmiana struktury bazy itp. i nic. Zawsze przy wielu rekordach w bazie zapytanie strasznie długo się wykonuje. Dodam że także zastosowałem indexy. Mam 2 tabele "product" oraz "product_offer" (tabele InnoDB) tabela "product" id | name | date_added | main Indexy na: id, name, main pole main informuje nas czy produkt jest produktem czy ofertą, gdy dany rekord w polu main ma 0 to znaczy że jest przypisany do innego produktu z tej samej tabeli. Przypisania zawarłem w tabeli "product_offer" id_product | id_offer | price Indexy na: id_product, id_offer oraz UNIQUE na id_product i id_offer w jednym Chce wyciąganć wszystkie produktu z nazwa, liczbą ofert do nich przypisaną oraz minimalną cenę. Oto zapytanie które to wykonuje jednak czas wykonania wynosi ponad 2 s :/
Co wy o tym myslicie ? Jak można to przyśpieszyć ? Dodam także że inne zapytania na innych tabelach ze złączeniami LEFT JOIN także wykonuje się długo przy takiej liczbie rekordów w bazie ![]() Ten post edytował Sajrox 22.01.2009, 19:10:33 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 16:48 |