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.
Optimaalinen ratkaisu
1
194
Vastaukset
- 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
Oletko kertonut jo muille tunteistasi?
Ystävillesi esimerkiksi? Minä en ole vielä kertonut kenellekään tästä meidän jutusta.774622- 1801897
- 1241600
- 1251134
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 🤔❤️161081- 351036
- 78933
- 52896
Hyvää huomenta!
Mietin miten suhtaudut minuun, jos kerron tunteista. Voinko enää sen jälkeen olla samassa paikassa kanssasi, jos koet as78872- 4838