如何快速创建一个大型Laravel表?

时间:2018-03-07 13:08:07

标签: php sql laravel

我有6个数据库,共有130k行。 我想在一张表中显示它们,但只显示10行需要10分钟。我该如何解决?我想更快地展示它们。

我不知道还有什么可以写这个问题。

Route::post('/xx/data', [
'as' => 'data',
'uses' => function () {
$results = DB::select('SELECT
ero.FehlerCounter, ero.AllFehler, "x" as platz1,  

pa.
pa.
pa.
pa.


"xx" as platz2,

ju.
ju.
ju.
ju.


"xxx" as platz3,

ncr.
ncr.
ncr.

"xxxx" as platz4,


wm.
wm.
wm.

"xxxxx" as platz5,

cpi.
cpi.
cpi.

FROM Error_tabel ero LEFT JOIN x_tabel pa ON (ero.Seriennummer = 
pa.Seriennummer) LEFT JOIN xx_tabel ju ON (ero.Seriennummer=ju.SerialNo) 
LEFT JOIN xxx_tabel ncr on (ero.Seriennummer=ncr.Serial) LEFT JOIN 
xxxx_tabel wm ON (ero.Seriennummer=wm.SerialNum) LEFT JOIN xxxxx_tabel cp ON 
(ero.Seriennummer=cp.SerialNumber)', array());

return \Yajra\Datatables\Datatables::of(collect($results))->make();
//  return $results;
}
]);

1 个答案:

答案 0 :(得分:1)

这需要时间,因为您要将数据加载到前端,

然而,在Laravel中有一种直接的方法可以为您提供更好的解决方案,请查看data chuncks

  

如果需要处理数千个数据库记录,请考虑使用chunk方法。此方法一次检索一小部分结果,并将每个块提供给Closure进行处理。此方法对于编写处理数千条记录的Artisan命令非常有用。例如,让我们一次使用100个记录的整个用户表。

DB::table('users')->orderBy('id')->chunk(100, function ($users) {
foreach ($users as $user) {
    // your code
}
});