我有一个项目(Laravel 5.4),我需要尽可能地提高性能。 所以我想知道之间的性能差异是什么:
$model->get()
get方法接受所有变量(' created_at',' updated_at'等),因此select应该更快。
$model->select('many variables to select')->get();
select方法是一个额外的查询,所以需要更多的时间,所以也许只是得到更快?
我想知道在所有场合中选择和获取是否更好,或者是否有任何时刻只是获得更好?
答案 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?