2013-11-21 126 views
4

,當我用雄辯來獲取數據,並發現了一些性能問題Laravel雄辯的性能問題

就我而言,我使用laravel debugbar(https://github.com/barryvdh/laravel-debugbar)收集我需要的信息。

當我使用ORM從我的數據庫獲取約20項

$projects = Project::where('status', '=', 2)->get(); 

花了大約24MB的內存使用情況和250ms的

但是當我使用查詢生成器,如下

$projects = DB::table('Project')->where('status','=',2)->get(); 

數據庫查詢和返回數據幾乎相同,但查詢構建器只用了11MB的內存使用量和113ms的數據量。

,當我需要的條目約200項,甚至涉及到通過ORM其他表,它需要差不多8000MS ......並獲得「允許的內存大小耗盡」往往錯誤信息..

所以,我想知道,在我的情況下,我應該使用查詢生成器並加入其他表?

或者我應該怎麼做才能加快Eloquent的表現?

回答

3

最後我發現問題在哪裏。 實際上,這個問題並非真正由雄辯的ORM造​​成的,而是由視圖造成的。 那是什麼我做了固定的問題

  • 預先加載: 由於在我看來4間的關係,所以導致N + 4次的查詢,我用的是預先加載到固定它。並使用

  • 緩存: 我使用remember()來緩存結果。

  • 取消圖像檢查: 我做的最後一件事情,但最重要的是取消檢查S3中的圖像。

頁面加載得到了巨大的加速。 :)

2

只是一個想法,你可能需要禁用查詢日誌記錄:

DB::connection()->disableQueryLog() 

和使用緩存:http://four.laravel.com/docs/cache

如果沒有顯著差異則是,你pobably只需要使用查詢生成器,甚至基本的:

DB::select(//your query here...)