我正在使用可处理大量数据(每天最少100万条记录)的系统,我决定使用mongo数据库,因为它适合大数据,一切正常,我可以检索并将数据插入其中数据库,但是我的问题是,即使我每次只检索10条记录,也要花很长时间从数据库中检索数据,所以每次花费30秒以上的时间只能得到10条记录,而且时间很长,所以我该如何改善程序性能,我正在使用服务器端数据表将数据显示为数据表, 这是我的控制器代码
public function hlist(Request $request){
$draw = intval( $request->input('draw'));
$start = intval($request->input('start'));
$length = intval($request->input('length'));
$order = $request->input('order');
$search=$request->input('search');
$search = $search['value'];
$col = 0;
$dir = "";
$limit = (int)$request->input('length');
$total_logs= $this->totalLogs();
$offset=$draw * $length;
$data=Logs::offset($offset)->limit($limit)->get();
// Execute the query
$output = array(
"draw" => $draw,
"recordsTotal" => $total_logs,
"recordsFiltered" => $total_logs,
"data" => $data
);
echo json_encode($output);
}
这是我的数据表代码
var table=$('#product-table').DataTable({ select: true,
dom: 'Brtip',
processing: true,
serverSide: true,"searching": true,
ajax: "hlist",
buttons: [ 'colvis' ],
order: [[1, 'asc']],
stateSave: true,
columns: [
{ data: 'sys', "defaultContent": "<i>Not set</i>" },
{ data:'time', "defaultContent": "<i>Not set</i>" },
{ data: 'Protocol', "defaultContent": "<i>Not set</i>" } ,
{ data: 'SourceIP' , "defaultContent": "<i>Not set</i>" },
{ data:'DestinationIP', "defaultContent": "<i>Not set</i>"},
{ data: 'SourcePort' , "defaultContent": "<i>Not set</i>"},
{ data: 'DestinationPort', "defaultContent": "<i>Not set</i>" }, { data:'BeginTime', "defaultContent": "<i>Not set</i>"}, { data: 'EndTime', "defaultContent": "<i>Not set</i>"}, { data: 'SendPkts' , "defaultContent": "<i>Not set</i>"}, { data: 'SendBytes' , "defaultContent": "<i>Not set</i>"},{ data: 'RcvPkts', "defaultContent": "<i>Not set</i>" },{ data: 'RcvBytes', "defaultContent": "<i>Not set</i>" },{ data: 'SourceVpnID' , "defaultContent": "<i>Not set</i>"},{ data: 'DestinationVpnID' , "defaultContent": "<i>Not set</i>"},{ data: 'SourceZone', "defaultContent": "<i>Not set</i>" },{ data: 'DestinationZone', "defaultContent": "<i>Not set</i>" },{ data: 'PolicyName' , "defaultContent": "<i>Not set</i>"},{ data: 'CloseReason', "defaultContent": "<i>Not set</i>" },{ data: 'ApplicationName' , "defaultContent": "<i>Not set</i>"},{ data: 'level' , "defaultContent": "<i>Not set</i>"}
]
});
$('#product-table tfoot th').each( function () {
var title = $(this).text();
$(this).html( '<input type="text" placeholder="Search '+title+'" />' );
} );
table.columns().every( function () {
var that = this;
$( 'input', this.footer() ).on( 'keyup change clear', function () {
if ( that.search() !== this.value ) {
that
.search( this.value )
.draw();
}
} );
} );
});
即使我只是直接在laravel中运行查询,也要花很长时间才能检索数据,所以我认为延迟是来自查询而不是来自数据表