Laravel的Eloquent Model給咱們的平常開發帶來了很大的便利,寫起來既簡單,又能保證性能和安全,可能對大部分人來講,只要在用Eloquent的時候,留意一下n+1查詢的問題就好了,只要避免了n+1查詢的問題,就基本沒什麼可顧慮的了。laravel
但真的是這樣嗎?有時候咱們也太在乎數據查詢了,這裏與其說「在乎」,其實不如說「不放心」,咱們生怕讓數據庫「多」作些什麼,好像它註定作很差似的,但其實數據庫是很是快的,不少工做在數據庫中去作,總比查詢了大量數據,而後放到PHP的內存中去作,要更快得多,更有效的多。數據庫
因此有的時候,當咱們千方百計避免了n+1查詢了,卻又致使往PHP內存裏填充了太多沒必要要的數據,致使內存佔用升高翻倍,頁面加載速度翻倍,laravel聚合的Model數量翻倍,這反而致使了性能的降低,尤爲當你數據量多,應用到了必定規模的時候。安全
怎麼樣既避免n+1查詢,同時又能充分利用起數據庫,不在PHP端作過多的沒必要要操做,從而保證最大性能呢?這就是咱們這個專場要解決的了。性能
專場裏,做者以一個常見的應用爲例,展現咱們常見的一些Eloquent數據獲取途徑,展現期間的一些問題,展現了在提升Eloquent性能上的常見模式,或者說套路。orm
值得慶賀的是,做者期間講的子查詢的幾個方法,從laravel 6.0開始,已經默認加入到laravel核心代碼裏了,成爲laravel 6.0新特性裏的重要一環。固然了,若是你是以前的laravel版本,就直接用做者開發的那個組件就行了。cdn