如果我有一个包含7000条记录的mysql数据库,我必须在我的网页上显示所有7000条。是否有任何提示和技巧来加快进程(浏览器在显示所有记录之前几乎崩溃)我知道我应该查询它以减少所选记录的数量但我实际上需要显示7000 ...
答案 0 :(得分:0)
启用输出缓冲:http://php.net/manual/en/function.ob-start.php
<?php
ob_start();
// do work...
ob_end_flush();
?>
修改强>
以下php获取10K产品并将其作为表输出,在0.014秒内没有问题。
<?php
ob_start();
$conn = new Mysqli("localhost", "vldb_dbo", "pass", "vldb_db");
$startTime = microtime(true);
$result = $conn->query(sprintf("call list_products(%d)", 10000));
echo "<table border='1'>";
while($row = $result->fetch_assoc()){
echo sprintf("<tr><td>%s</td><td>%s</td></tr>", $row["prod_id"], $row["name"]);
}
echo "</table>";
echo sprintf("<br/>Page generated in %s secs",number_format(microtime(true) - $startTime, 6, ".", ""));
$result->close();
$conn->close();
ob_end_flush();
?>
SQL脚本
drop procedure if exists list_products;
delimiter #
create procedure list_products
(
in p_prod_id int unsigned
)
begin
select * from product where prod_id between 1 and p_prod_id;
end #
delimiter ;
除了运行时潜水 - 在0.112902秒生成的页面
以外,也可以正常使用50K记录<强> EDIT2 强>
http://phplens.com/lens/php-book/optimizing-debugging-php.php
以上链接的摘录:
加快上述速度的另一种方法 代码就是使用输出缓冲。 这将累积输出字符串 在内部,并将输出发送到一个 在脚本结束时拍摄。这个 减少网络开销 基本上以更多的代价为代价 记忆和延迟增加。在 我的一些代码完全由 echo语句,性能 改善了15% 观察到的。
答案 1 :(得分:0)
我假设您正在使用PHP(我不熟悉)这样做,但这对所有语言都是通用的。
首先将7000条记录查询到列表中,然后在脚本页面中显示所有列表(例如php,jsp for java等)。不要让你的php页面打开连接,从列表中读取每个项目并显示它们。客户端(浏览器)可能无限期地等待并导致会话超时
答案 2 :(得分:0)
f00:如果他在表格中显示结果并且浏览器将存活以显示数据,则无论如何它们都不会被正确显示。据我所知,该表不能正确呈现(在Firefox中)... 我认为分页表是唯一可行的解决方案......