laravel性能差异只是得到vs选择和得到

时间:2018-03-18 15:38:26

标签: mysql laravel-5 eloquent

我有一个项目(Laravel 5.4),我需要尽可能地提高性能。 所以我想知道之间的性能差异是什么:

$model->get()

get方法接受所有变量(' created_at',' updated_at'等),因此select应该更快。

$model->select('many variables to select')->get();

select方法是一个额外的查询,所以需要更多的时间,所以也许只是得到更快?

我想知道在所有场合中选择和获取是否更好,或者是否有任何时刻只是获得更好?

1 个答案:

答案 0 :(得分:0)

Model::get()Model::select(['f1', 'f2'])->get()之间的差异仅在查询

// Model::get()
SELECT * FROM table

// Model::select(['f1', 'f2'])->get()
SELECT f1, f2 FROM table

两者都运行数据库查询ONCE,并为您准备模型实例的集合。 select只是简单地构建,只选择您需要的字段。性能提升几乎可以忽略不计,也可能更差。在此处阅读:Is it bad for performance to select all columns?