Avatar billede kgp43 Nybegynder
02. marts 2010 - 05:33 Der er 6 kommentarer

Optimering af query

Optimering af kode
Hejsa,

Jeg har en 12GB table med 2.5M enteries som jeg har brug for at søge i. Min nuværende kode tager 20-30sec om at komme med et resultat, hvilket er en smule for meget.

Nogle forslag?

// Test
$words = "find,internet,cool stuff";
$list = explode(",", $words);

// Get 5 articles matching one of the keywords
$article_query = mysql_query("SELECT * FROM postwrit_articles.articles WHERE title IN ('".implode("', '", $list)."') OR keywords IN ('".implode("', '", $list)."') LIMIT 5 ") or die(mysql_error());
while($article_fetch = mysql_fetch_array($article_query)) {
Avatar billede michael_stim Ekspert
02. marts 2010 - 07:28 #1
Nu tager det jo lidt tid, når du bruger IN. Er det nødvendigt at kunne søge på flere ord af gangen?
Avatar billede -mundi- Nybegynder
02. marts 2010 - 08:22 #2
Indsæt søgeordene i en tmp tabel, lav index på title og søg med inner join mod tmp tabellen.
Avatar billede repox Seniormester
02. marts 2010 - 08:44 #3
Jeg synes du sagde du ikke kunne få IN keywordet til at virke i http://www.eksperten.dk/spm/903199 ?
Men hvis jeg vidste at du havde så store entries, ville jeg aldrig have foreslået en IN query.

Synes #2 er inde på noget af det rigtige.
Du kunne optimere væsentligt ved at indeksere title og eventuelt søge på den litterale værdi på title istedet.
Keywords bør kunne smides over i en relationel tabel (en slags normalisering).
Avatar billede repox Seniormester
02. marts 2010 - 09:44 #4
Retter lige mig  selv i forhold til min første kommentar i #3 - havde ikke set der var kommet en opdatering i det spørgsmål jeg henviste til.
Avatar billede kgp43 Nybegynder
02. marts 2010 - 20:26 #5
ligger lige på det og vender tilbage senere :)
Avatar billede kgp43 Nybegynder
04. november 2015 - 12:56 #6
Repox.... smider du ikke lige et svar, så jeg kan få lukket dette gamle spørgsmål (pinligt)?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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