我正在使用轨道,在Heroku上与mongohq一起开发我的网站。
但是,我遇到了非常严重的性能问题。
我在每个用户页面上查询,加载所有数据的成本超过2秒数据并不多,只有30个音乐,每种音乐都可能具有大约1到3种不同的样式。
任何人都知道如何提高性能?
我已经尝试了大量方法,但仍然无法正常工作,Mongo显示每个查询都非常快。
这是代码:
@musics = [] #get all user downloaded musics
@uploaders = [] #record uploader of each music
@styles = [] #record the styles of each music
@user.mydownloads.each do |download_music|
music = Music.find(download_music) #find the music by id
@musics.insert(0, music)
uploader = music.user #find the uploader
@uploaders.insert(0,uploader)
@styles.insert(0,shortstyle(music.music_styles,10))
#shortstyle is a helper function in application helper to make the stylelooks nicer
end
如果需要所有数据,我该如何提高性能?
非常感谢你们!
您的索引是什么?
另外, @user.mydownloads中有多少个项目?
这将导致n 1查询,如果 @user.mydownloads大(大于1或2个项目,请参见此SO线程),这可能非常糟糕)