Я пытаюсь получить большое количество данных и распечатать их в таблице. В одной таблице у меня около 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. – Mysteryos
Я не вижу никакой логики «разбиения на страницы» в вашем коде ... Вы, вероятно, печатаете полную таблицу результатов ... :-( – MarcoS
используйте 'LIMIT' в своем SQL-запросе, чтобы выбрать не более 50, может быть, 100 записывает и реализует систему разбиения на страницы. Чтение нескольких тысяч одновременно - это плохая идея. – Forien