Optimaalinen ratkaisu

sanapareille

Tarkoituksena olisi tehdä yhdyssanatietokanta

yhdessä taulussa olisivat kaikki sanat, esim:

(id) (varchar)
1 talo
2 kesä
3 auto
4 poika
6 kirja
7 pöytä
jne..

ja toisessa sanaparinindeksit, joksikin näin:

(id)(id_aku)(id_loppu)
1 1 6 #talokirja
2 2 3 #kesäauto
3 7 6 #pöytäkirja
jne..

Jos oletamme että sanoja on tosipaljon (500/700 tuhatta) ja yhdistelmiä vielä enemmän. Niin jos pitäisi hakea esim kaikki "ta*" alkuiset sanat, niin hausta tulisi aika raskas, eikö niin? Ensin pitäisi yhdistää taulu1 ja taulu2, ja sitten etsiä sanojen loppuosat taulu1:sta. Eikö niin?

Onko tähän tarkoitukseen olemassa joku parempi ratkaisu, kun pitää hakea sanat ensimmäisen sanan tai sen alkuosan perusteella ja hakuja suoritetaan tosi paljon.

1

194

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Jokunen

      *Niin jos pitäisi hakea esim kaikki "ta*" alkuiset sanat, niin hausta tulisi aika raskas, eikö niin?*

      Mikäli oikein olen ymmärtänyt niin osittaisen tekstin haku on raskas, tosin tuossa tapauksessa pystyy käyttää indeksiä varsin tehokkaasti joten ei se hirvittävän raskas ole.


      *Ensin pitäisi yhdistää taulu1 ja taulu2, ja sitten etsiä sanojen loppuosat taulu1:sta. Eikö niin?*

      Ei. Jos tarkoitat tuota ta* juttua, niin tietokanta hakee ensis kaik mitkä täsmää ehtoon ta* sen jälkeen vasta suorittaa tuon liitoksen.


      Et kertonu tietokantaa, mutta yleisesti voidaan sanoa, että ei varchar vaan ennemmin char jos halutaan tehokkas ratkaisu. Haittana on tilantarpeen kasvu. Varchar tyyppisis joudutaan katsomaan pituus joka on hidasta kiinteä mittaseen verrattuna.


      Ja mikäli tuo on liian hidas niin voit harkita denormalisointia.

    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ä
      125
      1134
    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