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

536

    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. Mitkä asiat

      tekevät vaikeaksi kohdata kaivattusi?
      Ikävä
      74
      934
    2. Miltä se tuntuu

      Miltä se tuntuu havahtua, että on ollut ihmistä kohtaan, joka on rakastanut ja varjellut, täysi m*lkku? Vai havahtuuko s
      Ikävä
      104
      788
    3. 60
      772
    4. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      44
      734
    5. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      46
      670
    6. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      49
      664
    7. En mahda sille mitään

      Olet ihanin ja tykkään sinusta todella paljon.
      Ikävä
      31
      629
    8. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      34
      577
    9. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      50
      570
    10. Sinunkin pitää jättää

      Se kaivattusi rauhaan.
      Ikävä
      38
      516
    Aihe