Avatar billede rtfm Nybegynder
25. juli 2005 - 08:52 Der er 7 kommentarer og
1 løsning

Søgetider i meget stor database

Jeg sidder og roder med en særdeles stor database på små 600'000 poster, som fylder ca. 275 MB. Der er bare det problem, at når jeg skal søge i den, hvilket er hele formålet med databasen, så tager det nemt 10-30 sekunder. Jeg startede med at anvende RLIKE, men fandt ud af, at den ikke egnede sig til store databaser, og gik derefter over til den mere almindelige LIKE. Jeg har genereret et index på alle de felter jeg søger i, hvilket er stort set alle sammen - ikke at jeg aner om det har nogen effekt, da jeg ikke rigtig har rodet med søgetider før.

Men det mit spørgsmål nu lyder på er selvfølgelig, hvordan jeg dog kan optimere den søgetid?! For det er sgu noget seriøs optimering, der skal til for at rede den kode.
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 08:56 #1
LIKE vil altid være langsom. Du skal nok kigge på FULLTEXT i MySql.
Avatar billede rtfm Nybegynder
25. juli 2005 - 09:08 #2
Det er også hvad jeg har læst mig lidt frem til, men er der nogen der har rodet med det, som med garanti kan sige, at det er det der skal til?
Og hvordan fungere FULLTEXT egentlig?
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 09:15 #3
Jah, kig på www.mysql.com ;)

Du kan ikke bruge
    LIKE '%noget%'
i en stor tabel. Teoretisk kan du bruge
    LIKE 'noget%'
men jeg har aldrig haft anledning til at prøve om MySql vil kunne udnytte et
indeks på feltet, når den ved hvad det skal starte med. FULLTEXT er nok løsningen
under alle omstændigheder.
Avatar billede rtfm Nybegynder
25. juli 2005 - 09:39 #4
Hmm, ok. Det vil altså sige, at jeg i stedet for LIKE og RLIKE skal anvende MATCH()? Kiggede lidt på funktionen, men er ikke helt sikker på at jeg har forstået det ret. Så hvis jeg vil anvende MATCH på tabellen "tabel" med søgeordet $soeg i felterne "felt1" til "felt5", på hvilke der er lavet FULLTEXT INDEXES, hvordan vil queryen så komme til at se ud?
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 09:47 #5
Avatar billede rtfm Nybegynder
25. juli 2005 - 11:37 #6
Jo, det gør det faktisk. Ville bare have dig til at give dig et eksempel, hvis det var noget du havde rodet med før. Men har fundet ud af det, så mange tak.
Så mangler du bare at lægge et svar.
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 11:39 #7
Jeg samler slet ikke på point, tak.

Men fik du det til at virke, og give en bedre søgetid? Og hvor meget voksede databasen?
Avatar billede rtfm Nybegynder
25. juli 2005 - 12:11 #8
Ja, det må man sige. Søgetiden kom ned på mellem 0,0004 og 1,5 sekunder, så det er acceptabelt. Databasen voksede med små 50 MB, men det går jo nok.
Men hvis du ikke vil have pointene, vil jeg da lukke og slukke herfra.
Men må da sige mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester