为什么Laravel Datatables非常慢?

时间:2019-07-06 15:43:45

标签: php laravel datatables

我有一个与laravel合作的项目,他在其中使用了“ yajra / laravel-datatables”,问题是,在获取服务器数据时它非常慢。

该项目总共有11,000条记录,我用10中的10的数据表对其进行分页。要获得第10条记录需要3秒钟以上。

error

我们还有另一个项目是用PHP和Datatables原生完成的,大约有50,000条记录,并且通过引入前10条记录并具有相同的计算能力(需要100毫秒)来立即工作。

我的基础设施位于Amazon Web Services中。

由于我们将数据传递到Datatables的方式,我怀疑它正在从数据库中带走所有数据,并且仅向接口传递10条记录。但是,由于它获取了数据库中的所有记录,因此需要更长的时间。

$query = DB :: select( 'QUERY SQL' );
return DataTables :: of( $query ) -> toJson();

在工作台中运行查询大约需要200毫秒才能带出所有信息。

1 个答案:

答案 0 :(得分:1)

我不太确定如何从原始查询中创建整个Builder实例,但是您绝对可以使用子查询来实现:

$builder = DB::query()->fromSub(
    DB::raw($theQueryString),
    'wrapped_query'
);

return datatable($builder)->toJson();

这还具有以下优点:即使使用联接的表,排序和搜索也都可以完美地工作。