检索大量记录

时间:2015-01-09 10:34:47

标签: php mysql pdo

我正在尝试检索大量数据并将其打印在表格中。在一个表中,我需要在表中打印大约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>

2 个答案:

答案 0 :(得分:0)

我认为你应该使用一些ajax作为帮助。您打印出每页20条记录,当您在页面下方向下移动时,您会向服务器发送另一条查询以加载另外20条记录。当您需要处理大量记录时,它非常有效。

答案 1 :(得分:-1)

mysqli :: query中有一个可选标志就是这样一个问题。它被称为MYSQLI STORE_RESULT。所以你的代码看起来应该是休闲的。

$q = $conn->query($sql,MYSQLI_STORE_RESULT);