jak to przyspieszyc ?
QWERY - 29-12-2006 00:25
jak to przyspieszyc ?
Mam 4 tabele
1. produkty - id (unikalny/autoincrement), nazwa (varchar), producent_id (int) 2. producenci - producent_id (unikalny/autoincrement), nazwa (varchar) 3. zamowienia - zamowienie_id (unikalny/autoincrement), skasowane(int), itp 4. zamowienie_produkty - zp_id (unikalny/autoincrement), zamowienie_id (int), produkt_id (int), nazwa (varchar), anulowane(int), ilosc (int)
i teraz chcem zliczyć ile sztuk produktów danego producenta mam zamowionych oraz ile konkretnych produktów... robie wiec pytanie:
SELECT sum( zamowienie_produkty.ilosc ) AS ilosc_prod, zamowienia_produkty.nazwa , producent.producent FROM produkty, zamowienia, producent, zamowienie_produkty WHERE zamowienie_produkty .zamowienie_id = zamowienia.id AND produkt.produkt_id = zamowienie_produkty.produkt_id AND produkt.producent_id = producent.producent_id AND produkt.producent_id =1 AND zamowienia.skasowane !=1 AND zamowienie_produkty.anulowane !=1 GROUP BY zamowienie_produkty.produkt_id ORDER BY ilosc_prod DESC
Nie wiem jak przerobic zapytanie / tabele zeby gdy na teraz mam w zamowienie_produkty ok. 100 000 wpisów zapytanie nie trwało 1,38 sekundy
Ilosc sobie sumuje i mam ilosc całości a pozatym mam nazwe i ilosc pojedynczego towaru sprzedanego...
Przy 20 producentach 20 * 1,36sekundy to długo - a gdy w zamowienie_produkty bedzie 200tys czy 500tys wpisów to pewnie wogóle nie ruszy :(
Pomocy proszę od kogoś kto ma pomysł jak to zmienić - najwyraźniej brak jest jednoznacznego indeksu w zamowienie_produkty ale nie mam pomyslu jak to zrobic...
Grzegorz Danowski - 29-12-2006 00:25
"QWERY" <asdzxc109@wp.pl> wrote in message news:en0bdg$hfc$1@atlantis.news.tpi.pl... > > i teraz chcem zliczyć ile sztuk produktów danego producenta mam > zamowionych oraz ile konkretnych produktów... > robie wiec pytanie: > .... > Pomocy proszę od kogoś kto ma pomysł jak to zmienić - najwyraźniej brak > jest jednoznacznego indeksu w zamowienie_produkty ale nie mam pomyslu jak > to zrobic...
1. jaka baza? 2. indeksy są założone? baza je wykorzystuje? 3. po co sortujesz po ilosc_prod? 4. z Joinem zamiast Where próbowałeś (niektóre bazy tak wolą, ale patrz pkt. 1)?
Pozdrawiam Grzegorz
asdzxc109@wp.pl - 29-12-2006 00:25
Grzegorz Danowski napisał(a): > "QWERY" <asdzxc109@wp.pl> wrote in message > news:en0bdg$hfc$1@atlantis.news.tpi.pl... > > > > 1. jaka baza? > 2. indeksy są założone? baza je wykorzystuje? > 3. po co sortujesz po ilosc_prod? > 4. z Joinem zamiast Where próbowałeś (niektóre bazy tak wolą, ale patrz pkt. > 1)? > > Pozdrawiam > Grzegorz
1. baza mysql 4.1.21 2. musze doczytać dokładniej ;) jakieś są ale czy dobre ?! 3. sort po to zeby ładnie pozniej wyswietlic od najwiecej sprzedanych produktow do najmniej 4. JOINA jeszcze nie sprawdzalem...
Grzegorz Danowski - 29-12-2006 00:25
<asdzxc109@wp.pl> wrote in message news:1167316351.699212.234200@i12g2000cwa.googlegr oups.com... <cite> > 3. po co sortujesz po ilosc_prod? .... 3. sort po to zeby ładnie pozniej wyswietlic od najwiecej sprzedanych produktow do najmniej </cite>
Ok, ale dlaczego sortujesz przed grupowaniem a nie po? Czyli dlaczego nie: .... Order sum( zamowienie_produkty.ilosc )
Pozdrawiam Grzegorz
ali - 29-12-2006 00:25
> Ok, ale dlaczego sortujesz przed grupowaniem a nie po? Czyli dlaczego nie: > ... > Order > sum( zamowienie_produkty.ilosc ) >
nie bardzo rozumiem... robie sum(zamowienia_produkty.ilosc) aby mieć efekt: 50 (szt) chleb bialy 48 bulki 20 mleko
w PHP sobie robie SUMA+=ilosc przy wyswietlaniu i mam wtedy RAZEM SPRZEDANO 118 (szt)
a order chyba zawsze musi byc po group by ...
kf - 30-12-2006 01:03
Użytkownik "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> napisał w wiadomości news:en0del$h8$1@inews.gazeta.pl... > "QWERY" <asdzxc109@wp.pl> wrote in message > news:en0bdg$hfc$1@atlantis.news.tpi.pl... > 4. z Joinem zamiast Where próbowałeś (niektóre bazy tak wolą, ale patrz > pkt. 1)?
5. Co znaczy "chcem" ?
Przeraza mnie ten wszechobecny analfabetyzm. Coraz rzadziej zagladam na te grupe w obawie, ze zaczna mi sie utrwalac takie byki. Czy tak trudno pomyslec co sie pisze ?
kf
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Przyspieszenie =?windows-1250?Q?dost=EApu_do_tabel_w_SQL_Server_2005?=
[postgresql] szukanie po indeksie tsearch'owym wlecze sie - da siejakos przyspieszyc?
[postgresql] Jak =?ISO-8859-2?Q?przyspieszy=E6_zapytanie?=
[ORACLE] przyspieszenie selecta z grupowaniem
Przyspieszenie wyszukiwania ?
sqlnavigator tnsnames
Odzyskanie danych po sformatowaniu
Jak =?ISO-8859-2?Q?przekaza=E6_listener=3F?=
krajan@wp.pl
pobieranie w zaleznosci czy pole pierwsze czy drugie -kurde nie wiem jak zapytac
zanotowane.pldoc.pisz.plpdf.pisz.pllunadance.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|