我刚刚在我的应用程序中包含了一些登录信息。为了进行测试,我在数据库中填充了一些测试值(基本上是同一行,一遍又一遍,大约27k行..)。
现在,我想在视图上打印数据,这样做:
<table id="chatLogs">
<thead>
<tr>
<th>ID</th>
<th>Message ID</th>
<th>User Agent</th>
<th>IP:Port</th>
</tr>
</thead>
<tbody>
<?php
foreach($chatlogs as $log){ ?>
<tr>
<td><?=$log['ID'];?></td>
<td><?=$log['messageID'];?></td>
<td><?=$log['userAgent'];?></td>
<td><?=$log['IP'];?></td>
</tr>
<?php }
?>
</tbody>
</table>
$log
是我使用名为Medoo的数据库接口获取的变量。
此外,我还附上jQuery DataTables
以获取更好和可排序的表格。
<script>
$(document).ready( function () {
$('#chatLogs').DataTable({
dom: 'Bfrtip',
buttons: [
'copy', 'excel', 'pdf'
]
});
} );
</script>
现在,在完成所有操作并完全加载页面之前,大约需要15秒(使用27k测试行)。 我只是直接在数据库上测试了相同的查询,这花费了0.02秒,因此,它完全是关于PHP的,而不是关于SQL的。
似乎回显表中的所有内容都需要一些时间,以及“将其加载到DataTables中” ...
现在的问题是:是否可以使其更快或更快速地加载,并在需要时加载数据?我的意思是仅将数据加载到JSON中,而不先回显所有内容(这是最长的部分)?因为在该表中,无论如何首先只有10行,并且每次我单击下一页时,它都可以呈现它。当然,所有数据仍然需要进行搜索。
有什么想法吗?
答案 0 :(得分:0)
您可以通过使用limit $start $stop
一次仅加载一组记录来提高加载时间,以使用php和sql来提高性能,也可以使用DataTable的"iDisplayLength",
属性来这样做。