Discgolfscores.net > DGS-keskustelu ja -kysymykset

Apua tilastointiin eli kimurantti SQL kysely - luvassa palkinto

<< < (2/2)

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