Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie zbyt skomplikowane zapytanie (z LEFT JOIN) wykonuje się zbyt długo (nawet ponad 2 sekundy), W bazie z 140 000 rekordami baza działa bardzo wolno.
Sajrox
post 22.01.2009, 18:51:44
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 :/

  1. SELECT p.id,p.name,count(po.id_offer) AS offers,min(po.price) AS price_min FROM pco_product AS p LEFT JOIN pco_product_offer AS po ON p.id = po.id_product WHERE (p.main = '1') GROUP BY po.id_product ORDER BY p.name ASC LIMIT 0, 20


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 sad.gif

Ten post edytował Sajrox 22.01.2009, 19:10:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 16:48