On Monday 08 December 2008, Matthias Sch. wrote: > Hallo zusammen, > > ich habe die Anfragen etwas umgestaltet in : > > li = Term.find(:all, #Oberbegriffe > > :joins => 'INNER JOIN sims ON sims.term1_id = > > terms.id INNER JOIN terms terms2 ON sims.term2_id = terms2.id', > > :conditions => ["terms2.bezeichnung IN (?)",tag], > :order => 'sims.similarity DESC', > :limit => 5).each do |element| > > @super_terms << element.bezeichnung > end > return @super_terms > > und in die andere Richtung : > > la = Term.find(:all, #Unterbegriffe > > :joins => 'INNER JOIN sims ON sims.term2_id = > > terms.id INNER JOIN terms terms2 ON sims.term1_id = terms2.id', > > :conditions => ["terms2.bezeichnung IN (?)",tag], > :order => 'similarity DESC', > :limit => 15).each do |element| > > @sub_terms << element.bezeichnung > end > return @sub_term
Ersetze das #each durch ein #map, das ist in Ruby viel idiomatischer und erspart auch das ohnehin überflüssige return. > Woran kann das liegen und wie bekomm ich das > performanter hin? Hast du einzelne Methoden in script/console aufgerufen oder Requests an die Anwendung getestet? In beiden Fällen, schau im development.log, welche Anfragen an die Datenbank geschickt werden als Folge einer solchen Aktion. Wenn du das SQL aus dem Log ausschneidest, kannst du es auch auf der mysql-Kommandozeile ausführen. Dort bekommst du mit EXPLAIN SELECT ... eine Erklärung, wie MySQL die Anfrage ausführt. Michael -- Michael Schuerig mailto:[EMAIL PROTECTED] http://www.schuerig.de/michael/
_______________________________________________ rubyonrails-ug mailing list [email protected] http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
