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