質問: $query->get(); return [ 'datas' => $datas->map(function($data) { return [ 'id' => $data->id, 'sub_id' => $data->sub_id, 'hoge_id' => $data->data_sub->hoge_id, 'hoge_name1' => $data->data_sub->hoge_name1, 'hoge_name2' => $data->data_sub->hoge_name2, 'hoge_name3' => $data->data_sub->hoge_name3, 'result' => $data->data_sub->hoge ? $data->data_sub->hoge->hoge_result : '', 'category' => $data->data_sub->hoge ? $data->data_sub->hoge->hoge_category : '', 'status' => $data->data_sub->hoge ? $data->data_sub->hoge->hoge_status : '', 'info' => $data->data_sub->hoge ? $data->data_sub->hoge->hoge_info : '', 'date' => $data->date, ]; }), ]; } public function data_sub() { return $this->belongsTo('data_sub'); } ```
回答: 提示されたコードだけでは、おそらく各項目の取得においてN+1問題が発生しているように見えます。 `with`や`load`によって Eager load をすることでクエリ数は大幅に減らせます。 が、1万件のレコードについての処理となると消費するメモリがそこそこになりそうなので分割して行うべきかもしれません。