Taulujen liitoksista

--------

Tulimpas tässä miettineeksi onkos mitään väliä missä järjestyksessä tauluja liittää? Vai voiko huoletta länttästä oman mieltymyksen mukaan ilman hitaantumista jne....

Keksitty esim
Kaupan_tuotteet (noin 1000 tuotetta)
Kaupan_asiakkaat (noin 200 asiakasta)
Kaupan_ostostapahtumat (noin 100000 ostostapahtumaa)

Jos haluttaisiin hakea x asiakkaan kaikki ostostapahtumat tuote tietoineen.

SELECT * FROM tuotteet AS t
JOIN ostostapahtumat AS o ON t.tuote_id = o.tuote_id
JOIN asiakkaat AS a ON a.asiakas_id = o.asiakas_id
WHERE a.asiakas_id = x

-----

SELECT * FROM asiakkaat AS a
JOIN ostostapahtumat AS o ON a.asiakas_id = o.asiakas_id
JOIN tuotteet AS t ON t.tuote_id = o.tuote_id
WHERE a.asiakas_id = x

Ja miten nuo liitokset pinnanalla menee, tehdäänkö eka WHERE ja sit lähdetään liittelemään?

2

502

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • I.Proqatlis

      Kosketat tässä ongelmaa, jonka käsittelyyn on uhrattu suunnattomia määriä aivotyötä.

      Asia ei ole aivan niin yksinkertainen, että kun joinit kirjoitetaan jossain järjestyksessä, ne myös suoritettaisiin siinä järjestyksessä. Itse asiassa kyselyn suorittamiseen kuluva aika saattaa vaihdella valtavasti riippuen siitä, missä järjestyksessä liitokset tehdään.

      Parhaan suoritustavan löytämiseksi on olemassa ohjelmia, joita kutsutaan englanniksi "query optimizer", siis optimoija. Se tutkii suoritettavaksi annetun SQL-lauseen ja analysoi sille mielestään parhaan suoritusstrategian. Valintaan vaikuttaa monia tekijöitä, mm. eri tauluissa olevien rivien määrä. Vasta tämän analyysin jälkeen, kun strategia on olemassa, lähdetään suorittamaan kyselyä.

      Tämä on laaja aihe, enkä yritä tässä sitä tarkemmin käsitellä. Eräs linkki, josta löytyy lisää tietoa, on tässä alla. Tuossa jutussa on myös linkkejä useihin sivuaviin aiheisiin.

      http://en.wikipedia.org/wiki/Query_optimizer

      • --------

        Kiitoksia jälleen, täytyypä illemmal tutkia mitä tuolt linkist löytyy. Hyvää juhannusta.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Oletko kertonut jo muille tunteistasi?

      Ystävillesi esimerkiksi? Minä en ole vielä kertonut kenellekään tästä meidän jutusta.
      Ikävä
      77
      4622
    2. Olisin ottanut sinusta akan itselleni

      Mutta olitkin aika itsepäinen ja hankala luonne.
      Ikävä
      180
      1897
    3. Ei sua pysty unohtamaan

      Ei vaan yksinkertaisesti pysty
      Ikävä
      124
      1600
    4. Kerro todelliset motiivit

      kaivattuasi kohtaan?
      Ikävä
      124
      1125
    5. Miten minusta tuntuu että kaikki tietää sun tunteista mua kohtaan

      Paitsi suoraan minä itse, vai mitä hlvettiä täällä tapahtuu ja miksi ihmiset susta kyselee minulta 🤔❤️
      Ikävä
      16
      1081
    6. Hei, huomenta komistus

      Yllättääkö, että olet heti mielessä. Mukavaa päivää upea ❤️
      Ikävä
      35
      1036
    7. Sunnuntain terveiset kaivatulle

      Mitä ajattelet hänestä tänään? Mitä haluaisit sanoa hänelle?
      Ikävä
      78
      933
    8. Miks et tahtonut

      Enää nähdä? Haluaisin ymmärtää
      Ikävä
      52
      896
    9. Hyvää huomenta!

      Mietin miten suhtaudut minuun, jos kerron tunteista. Voinko enää sen jälkeen olla samassa paikassa kanssasi, jos koet as
      Ikävä
      78
      872
    10. Mulla on tarkat korvat

      Kuulin sun äänen ihan selvästi.
      Ikävä
      4
      838
    Aihe