首页 > 解决方案 > 使用 eloquent laravel 优化查询

问题描述

为此,我正在使用 laravel 和 eloquent 我有一个名为 Expense 的模型,它指的是一个或多或少具有这种结构的简单表:

|  expenses  | 
|------------|
| id         | 
| date       | 
| amount     |
| created_at |
| updated_at |
| deleted_at |  

现在我需要获取当年每个月的总费用,所以请执行以下操作:

Expense::select( DB::raw('sum(amount) as sums'), 
            DB::raw("DATE_FORMAT(created_at,'%M') as months"))
         ->groupBy('months')
         ->get();

前面的代码生成以下查询:

select sum(amount) as sums, DATE_FORMAT(created_at,'%M') as months from `expenses` where `expenses`.`deleted_at` is null group by `months`

这可行,但我的问题是我的表中有很多记录,并且查询执行完整扫描,我该如何改进我的代码并优化我的查询?

标签: phpmysqllaravel

解决方案


推荐阅读