我正在尝试从数据库打印记录,一切都很好,但速度很慢.. 使用Bootstrap框架。
查询
$sql="
SELECT a.ArtId
, a.ArtSifra
, a.ArtNaziv
, a.ArtMinKolic
, a.ArtKategorija
, a.ArtAktivan
, a.ArtRoditelj
, a.ArtStanjeSa
, a.ArtStanjeBL
, b.JmNaziv
, c.KatNaziv
FROM artikli a
LEFT
JOIN mjera b
ON a.ArtMjera = b.JmId
LEFT
JOIN kategorija c
ON a.ArtKategorija = c.KatId
ORDER
BY a.ArtKategorija ASC
";
$q = $conn->query($sql);
创建表
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-sortable="true">Id</th>
<th data-field="sifra" data-sortable="true">Sifra</th>
<th data-field="name" data-sortable="true">Naziv</th>
<th data-field="mjera" data-sortable="true">Jed. mjere</th>
<th data-field="stanjesa" data-sortable="true">Stanje </th>
<th data-field="stanjebl" data-sortable="true">Stanje 2</th>
<th data-field="minkolicina" data-sortable="true">Min</th>
<th data-field="kategorija" data-sortable="true">Kategorija</th>
<th data-field="status" data-sortable="true">Status</th>
</tr>
</thead>
然后我通过while循环
获取结果<?php while ($r = $q->fetch()): ?>
<tbody>
<td data-field="checkbox" data-checkbox="true"> </td>
<td><?=$r['ArtId'] ?> </td>
<td><?=$r['ArtSifra'] ?></td>
<td><?=$r['ArtNaziv'] ?></td>
<td><?=$r['JmNaziv'] ?></td>
<td><?=$r['ArtStanjeSa']?></td>
<td><?=$r['ArtStanjeBL'] ?></td>
<td><?=$r['ArtMinKolic'] ?></td>
<td><?=$r['KatNaziv'] ?></td>
<td><?=$r['ArtAktivan'] ?></td>
</tr>
<?php endwhile; ?>
</tbody>
我想知道有没有办法让结果更快?在此表中,我有大约1000行需要打印。我尝试过存储过程也很慢。 非常感谢任何帮助或建议。
答案 0 :(得分:2)
索引用于连接的列。这可以使用PHPMyAdmin轻松完成 - 只需登录,找到表格,进入结构并点击&#34;索引&#34;在用于连接的行上(每个ID)。
不应在没有索引的情况下运行联接。正如你所看到的那样,它会让它们慢下来。
干杯!
答案 1 :(得分:1)
索引用于加速数据库中的搜索。
索引编制的文档:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
索引用于高效查找与查询中某些列匹配的所有记录,然后仅遍历表的该子集以查找您选择的完全匹配。如果在WHERE子句中的任何列上没有索引,那么SQL服务器必须遍历整个表并检查每一行以查看它是否匹配,这可能是一个缓慢的操作 on大桌子。
索引也可以是UNIQUE索引,这意味着您不能在该列中具有重复值,或者PRIMARY KEY在某些存储引擎中定义数据库文件中存储值的位置。
答案 2 :(得分:1)
你也可以使用EXPLAIN()来帮助你更好地理解你的查询以及它是否使用索引:
上述内容的简短说明也可以在这里找到:
最后一点,这些表有多大?