php - 管理页面上的用户表,需要很长时间才能加载

标签 php mysql

我使用这个查询:

$result_members = mysql_query("SELECT * FROM members");

结果显示在我的管理页面的表格中,如下所示:

while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...

<tr>
 <td><? echo "$id"; ?></td>
 <td><? echo "$firstname"; ?></td>
 ...
</tr>
}

我使用 jQuery 分页,每页显示 50 行,并使用 jquery 自动完成功能在表格中进行搜索。

加载和搜索都需要很多时间。从几秒到一分钟不等。我的数据库中有大约 5.000 名成员。

我认为有更好的方法来做到这一点。我没有使用 mysql 的经验,所以如果你能告诉我一个简单的方法来使这项工作顺利进行,我将非常高兴! :)

问候

维克

最佳答案

改变

SELECT * FROM members

SELECT * FROM members LIMIT 200

缺点是,您只能显示/搜索用户的前 4 页。如果您想解决这个问题,您需要让 jQuery 页面动态请求更多数据,这会使事情复杂一个数量级。

如何添加这个功能

很多代码取决于您使用的分页插件。一些插件有 integrated support for it ,其他你可能需要入侵。

但是,服务器端的东西并没有真正改变。您需要第二个 PHP 脚本,它只返回一页给定的结果。这是一个。

fetch_page.php:

<?
define('RESULTS_PER_PAGE', 50);
$page = $_GET['page];
$page = (int) $page; // Cast to int to prevent sql injections and let us do math on it.

$start = $page * RESULTS_PER_PAGE;
$end = ($page + 1) * RESULTS_PER PAGE;

$result_members = mysql_query("SELECT * FROM members LIMIT $start, $end");

while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...

<tr>
 <td><? echo "$id"; ?></td>
 <td><? echo "$firstname"; ?></td>
 ...
</tr>
}
?>

请注意,对此进行搜索是完全不同的事情。有两种搜索方式:

1) 将服务器端的所有数据加载到客户端。这非常慢,特别是因为 javascript/DOM 并不是存储/搜索大量数据的真正正确方法。但是,它很容易组合在一起。

2) 在数据库服务器上进行查询,并将结果返回给客户端。这也很复杂。

您应该考虑这种增加的复杂性是否合理。为什么需要搜索用户表?

关于php - 管理页面上的用户表,需要很长时间才能加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925211/

相关文章:

mysql - 使用 mysql_affected_rows 来防止竞争条件

php - 使用 PDO 在 MySql 查询中增加值

c# - 连接池与max_connection的关系

php - Magento - 空白的白屏搜索结果。很多东西坏了

php - 部署在 IP 地址上的 Codeigniter 在除索引之外的每个 Controller 上给出 404

php - 第二个选择框从 jquery 中的第一个选择框填充

php - 选择多个MySQL表并检索不同的数据

mysql - 在 Perl 或 MySQL 中用上面的单元格替换缺失值?

java - 将 Amazon RDS 与只读副本结合使用时,如何处理最终的不一致问题?

php - 我正在尝试在 php 中运行邮件表单。这是带有 Bootstrap 3.0 的 HTML