PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Päring andmebaasist
Postitaja: joker 2005-03-28 11:23:54
Situatsioon järgmine: mul on kaupade lehekülg. Iga kord kui keegi tellib mõne kauba, siis kirjutatakse selle kohta info andmebaasi tabelisse X.

Kui külastaja tuleb kauba leheküljele, siis näeb ta mida eelmised külastajad on tellinud. Päring eelmise külastaja tellimuse kohta tehakse kahest tabelist X ja Y. X tabel sisaldab vanu tellimusi, Y tabel aga infot kaupade kohta.

Kuna aja jooksul on päris palju tellimusi kuhjunud, siis nende kauba lehekülgedel mida on palju tellitud on päring päris aeglaseks muutunud. Kuna kaupu lisandub jooksvalt peale, siis aeglustub lehekülg veel ja veel.

Päring ise näeb välja alljärgnev:
$query = mysql_query("SELECT o2.product, k.title, k.description, k.image, k.instock, COUNT( * ) AS kokku FROM store_X o1 INNER JOIN store_X o2 USING ( cart_order_id ) INNER JOIN store_Y k ON ( o2.product = k.product ) WHERE o1.product = '$product' AND o2.product != '$product' AND k.instock > 1 GROUP BY o2.title, k.title ORDER BY kokku DESC") or die(mysql_error());

Oskab keegi nõu anda, kuidas asja kiiremaks muuta?!

Joker
RE: Päring andmebaasist
Postitaja: axelpaan_ 2005-03-28 11:55:50
GROUP BY o2.title, k.title

grupeerid vist mingite stringide järgi, see pole eriti mõistlik
asenda need tabelis olevate numbriliste väljadega, id-d või midagi sellist, need võiks olla ka indekseeritud.
RE: Päring andmebaasist
Postitaja: backup 2005-03-28 14:31:56
TSITEERITUD:
Iga kord kui keegi tellib mõne kauba, siis kirjutatakse selle kohta info andmebaasi tabelisse X.
ma soovitaks sul ikak iga kuu/nädal teha ülekanne tabelist X tabelisse X_backup, nii et X-i jääks mõned (sajad) read alles. ega su kliente ei huvita ju mis inimesed aasta tagasi ostsid ja pealegi võid hoopis teha, nii et paned ainult kallimad asjad sinna tabelisse, siis saad rohkem pappi;)
___________________________________________________
see on minu arvamus, te võite muidugi vastu vaielda
RE: Päring andmebaasist
Postitaja: joker 2005-03-28 16:56:23
Mitte aru ei saa, millest selline tootelehekülje aeglus.
Lehekülg avaneb alates 1 sekundist kuni 9 sekundini.
Samas Firefoks suudab murdosa kiiremini teha kui Internet Explorer.

Oskab keegi nõu anda, mida võiks üldse üle tsekaata, et optimeerida lehekülge, PHPd, andmebaasi?
RE: Päring andmebaasist
Postitaja: er 2005-03-28 17:24:09
TSITEERITUD:
Mitte aru ei saa, millest selline tootelehekülje aeglus.
Lehekülg avaneb alates 1 sekundist kuni 9 sekundini.
Samas Firefoks suudab murdosa kiiremini teha kui Internet Explorer.

Oskab keegi nõu anda, mida võiks üldse üle tsekaata, et optimeerida lehekülge, PHPd, andmebaasi?
FROM store_X o1 INNER JOIN store_X o2 USING ( cart_order_id )
Milleks see? Kas tabeli INNER JOIN iseendaga ei võrdu mitte selle tabeli endaga? Või jäi mul midagi kahe silma vahele...

Ja juhiksin tähelepanu axelpaani mõtteterale indeksite kohta.
RE: Päring andmebaasist
Postitaja: aju 2005-03-28 19:28:53
TSITEERITUD:
Mitte aru ei saa, millest selline tootelehekülje aeglus.
Lehekülg avaneb alates 1 sekundist kuni 9 sekundini.
Samas Firefoks suudab murdosa kiiremini teha kui Internet Explorer.

Oskab keegi nõu anda, mida võiks üldse üle tsekaata, et optimeerida lehekülge, PHPd, andmebaasi?


pane peale mõõtjad st. jõua selgusele kus on scripti aeglasem osa, kui päringus, siis axeli nõuanne igati pädev. Kui mujal opimiseeri koodi. Ja kui miski ei aita, siis uuenda riistvara.
RE: Päring andmebaasist
Postitaja: joker 2005-03-29 00:57:43
Tänud kõigile kes võtsid vaevaks vastata.
Peale tabelite indekseerimist läks asi täesti tunduvalt kiiremaks.

Veel üks küsimus - mis juhtub kui PRIMARY ja INDEX võtmed on määratud väljale `id`, kas see ka aeglustab kuidagi tööd andmebaasidega?!

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.080493927002