我在mysql上有两个大表, users
1538行,以及 ads
对于5414行,当我尝试加载这两个行并在html表上显示它们的数据时,页面速度会减慢,仅呈现这些表就需要大约10秒钟
我的代码:
<?php $getAllUsers = "SELECT * FROM users"; ?>
<?php $getAllPosts = "SELECT * FROM posts"; ?>
<!-- USERS TAB -->
<div id="usersTab" class="tab w3-container">
<h1>Usuários</h1>
<table id="usersTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
<thead>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
<th>Senha</th>
<th>Data de cadastro</th>
</thead>
<tbody>
<?php foreach ($connect->query($getAllUsers) as $tableRow) {?>
<tr onclick="editUserData()">
<td><?php echo $tableRow["ID"] ?></td>
<td><?php echo $tableRow["user_login"] ?></td>
<td><?php echo $tableRow["user_email"] ?></td>
<td><?php echo $tableRow["user_pass"] ?></td>
<td><?php echo $tableRow["user_registered"] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<!-- ADS TAB -->
<div id="adsTab" class="tab w3-container">
<h1>Anúncios</h1>
<table id="adsTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
<thead>
<th>ID</th>
<th>Titulo do anúncio</th>
<th>Data de publicação</th>
</thead>
<tbody>
<?php foreach ($connect->query($getAllPosts) as $tableRow) {?>
<tr>
<td><?php echo $tableRow["ID"] ?></td>
<td><?php echo $tableRow["post_title"] ?></td>
<td><?php echo $tableRow["post_date"] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
我想知道是否有任何方法可以提高性能和减少表加载时间
2条答案
按热度按时间lvmkulzt1#
由于您的表有相对较大的数据量,需要10分钟,因此我建议您使用ajax调用,而不是在服务器端呈现表。
比如用两个表做一个静态页面;
现在在页面加载中,使用两个不同的ajax调用以json格式获取数据。
在php端可以压缩gzip格式的数据,使数据更小;
因此,如果你这样做,你会得到如下设施;
1两个表的数据将并行获取
2非阻塞用户界面
三。gzip编码将减少传输的数据量
现在,如果可能的话,我建议您在表中使用分页(尽管我不知道您的要求)。如果您使用分页,它将真正有助于使页面更快。仅供参考,如果您试图通过自己的代码实现分页,那么这将有点费时,而您可以使用某种网格的js库(例如。
JqGrid, JQuery data table, Handsontable
等)除此之外,如果您真的只想使用php,还有一些高级解决方案。喜欢;
群集数据库
索引表以快速获取数据
使用php的p线程以并行方式获取数据。
eivnm1vs2#
您应该遵循这些技术从数据库中检索大量数据。当您在企业级应用程序上工作时,它将帮助您。
1分块数据
当您的数据库中有大量数据时,您应该将这些数据分块为一个小集合。这意味着每页获取100个数据并使用分页来管理页面(使用ajax更好)。
更多信息
2索引
索引在数据库设计中是一件非常重要的事情。它将优化检索过程。
更多信息
3.聚类
数据库聚类是一种先进的技术,在大型产品中常用于控制数据库系统中的数据丢失、数据库服务器故障和流量。但是学习你的知识。
更多信息