Discgolfscores.net > DGS-keskustelu ja -kysymykset
Apua tilastointiin eli kimurantti SQL kysely - luvassa palkinto
deiga:
Tämän kyselyn hyödyntäminen suoraan on ainakin huono idea, sillä alikyselyt ovat melko hitaita verrattuna joineihin.
--- Quote from: gummi on 28.08.12 - klo:13:51 ---
SELECT *
FROM
(
SELECT t1.*
FROM dgs_tulos t1
LEFT JOIN dgs_tulos t2
ON t2.user_id = t1.user_id
AND t2.par_total < t1.par_total
WHERE t1.course_vid = <course-id>
GROUP BY t1.id
HAVING COUNT(DISTINCT t2.id) < 1
ORDER BY t1.par_total ASC, t1.date DESC
)
GROUP BY user_id
ORDER BY par_total ASC
Toi ehkä saattaa toimia. Ulompi kysely vain poistaa duplikaatit & järjestelee listan, sisempi etsii käyttäjien parhaat tulokset. Date kentän järjestely riippuu hieman miten kanta on toteutettu mutta ehkä tuo toimii...
--- End quote ---
tumi:
Semmonen mutu itsellä tässä keississä, ettei välttis kannata tehdä monimutkaista ja hidasta Sql-kyselyä kun yksinkertaisella kyselyllä ja postprocessingilla voi päästä nopeampaan ja helpompaan ratkaisuun?
gummi:
Joo joineja ja alikyselyitä on hyvä välttää mutta jos niitä ei saisi harkitusti käyttää niin koko SQLn vois vaihtaa sit vaikka key-value storeksi. Mutta ei mennä nyt siihen. :)
DGS on kuitenkin varmaankin yli 95/5 read/write joten en näe mitään syytä miksi tuollaista hieman hitaampaa kyselyä ei voisi käyttää kunhan muistaa cachettaa tulokset fiksusti. Eikä tuo nyt oikeasti niin kovin monimutkainen/kallis kysely vielä ole...
Navigation
[0] Message Index
[*] Previous page
Go to full version