Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL kyselyt ja kuormitus

tomixx [02.03.2006 22:24:04]

#

Kyseessä on haku-skripti.
On tilanne, että on 200 riviä taulukossa.
Sitten on silmukka, joka testaa jokaisen rivin ja tutkii täyttääkö se tietyt ehdot. Jos kyseinen rivi täyttää ehdot, pitäisi tulostaa tietty arvo toisesta taulukosta.

Onko tuo parempi tehdä niin että silmukka joka kerralla kyselyllä etsii sen rivin toisesta taulukosta, vaiko niin, että ennen silmukkaa on jo haettu toinen taulukko muuttujaan ja sitten silmukassa on toinen silmukka, joka etsii oikean arvon.

Toisin sanoen: Kuinka kovasti MySQl rasiintuu, jos tulee kyselyitä 100-200 per sivulataus ja kävijöitä esim. parikymmentä samaan aikaan ?

Wizard [02.03.2006 23:30:56]

#

Tuossa tulee max 2 kyselyä kun optimoi sitä eli:

1) Kelaa koko 200 rivin taulu läpi php tauluun. Tutki se läpi omilla ehdoillasi ja kerää ne rivinumerot johonkin talteen jotka haluat hakea toisesta taulusta.

2) Toisessa SQL kyselyssä sitten haet yhdellä kyselyllä kaikki ne rivit jotka sinua kiinnostaa siitä toisesta taulusta.


Jos tietysti olet järkevä ja pätevä, niin yksi kysely riittää: pistät vain ehtoja siihen MySQL kyselyyn ja annat tietokannan hoitaa ehtojen tarkistuksen. Avainsanoja on AND & OR.

Tilanteesta riippuen 1 tai 2 kyselyä. 200 riviä taas ei ole mikään määrä, enemmän menee aikaa kun avataan yhteyksiä tietokantaan ja sen sellaista. Kun rivejä alkaa olemaan 2 miljoonaa, niin se vaikuttaa.


--WIZ--

tomixx [03.03.2006 22:21:13]

#

Kuinkas siinä tapauksessa, että tarkistan molempien taulujen arvoja. (Samalla asialla on molemmissa tauluissa sama id)

Kun ensimmäistä taulua kelaa läpi joutuuko jokaisella kerralla tekemään kyselyn toiseen tauluun. Mikä on parempi tapa ?

ajv [03.03.2006 22:41:58]

#

Ongelmasi vaikuttaa sen verran yksinkertaiselta, että uskoisin sen ratkeavan ihan helpolla JOINilla. Eli yhdellä kyselyllä voit hakea useammastakin taulusta tietoa. Tässä simppeli esimerkki kahdesta taulusta hakemisesta muutamilla hakuehdoilla:

SELECT
   linkit.url,
   linkit.otsikko,
   kategoria.nimi
FROM
   linkit
INNER JOIN
   kategoria ON linkit.kategoria_id = kategoria.id
WHERE
   linkit.otsikko LIKE '%putka%' AND
   kategoria.nimi LIKE '%ohjelmointi%'

tomixx [03.03.2006 22:50:01]

#

Jotain tälläistä etsinkin :P
Tää auttoi paljon..!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta