【发布时间】:2016-12-25 03:10:37
【问题描述】:
我正在尝试检索大量数据并将它们打印在表格中。在一张表中,我需要在表中打印大约 5000 条记录,而在一张表中,我有大约 10000 条记录。 我正在使用带有分页的 DataTable,并且在表中打印记录的时间非常慢。 我也尝试过创建存储过程,时间是一样的。
非常感谢任何帮助或建议。
这是我正在使用的代码
$sql= "SELECT a.Id, a.Datum, a.Materijal, a.VrstaIzlaza, a.BrojIzlaza, a.Pocetno, a.Krajnje, a.Promet, b.OdjelNaziv, c.LokacNaziv
FROM jos_ib_promet_reprm_2014 a
LEFT JOIN odjeli b ON a.Odjel=b.OdjelId
LEFT JOIN sredstva c ON a.Poslovnica=c.LokacijaId order by a.Id desc";
$q = $conn->query($sql);
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Id</th>
<th>Materijal</th>
<th>Izlaz</th>
<th>Br. dokumenta </th>
<th>Datum</th>
<th>Pocetno stanje</th>
<th>Krajnje stanje</th>
<th>Promet</th>
<th>Odjel</th>
<th>Poslovnica</th>
</tr>
</thead>
<tbody>
<?php while ($r = $q->fetch()): ?>
<tr>
<td><?=$r['Id'] ?></a> </td>
<td>R-<?=$r['Materijal'] ?></td>
<td><?=$r['VrstaIzlaza'] ?></td>
<td><?=$r['BrojIzlaza']?></td>
<td><?=$r['Datum'] ?></td>
<td><?=$r['Pocetno'] ?></td>
<td><?=$r['Krajnje'] ?></td>
<td><?=$r['Promet'] ?></td>
<td><?=$r['OdjelNaziv'] ?></td>
<td><?=$r['LokacNaziv'] ?></td>
</tr>
</tbody>
</table>
【问题讨论】:
-
使用延迟加载技术,即仅在需要显示数据时通过 AJAX 获取数据。耗时的部分来自您长时间运行的 MYSQL 查询。
-
我在您的代码中看不到任何“分页”逻辑...您可能正在打印完整的结果表... :-(
-
在你的 SQL 查询中使用
LIMIT选择不超过 50 条,也许 100 条记录并实现分页系统。一次读几千本是个坏主意 -
我不同意上面的 cmets。慢的不是查询,而是渲染结果所花费的时间。