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.
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.
Vastaukset 1
Vanhimmat
*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.