显示许多mysql记录

时间:2010-11-23 11:16:32

标签: mysql select

如果我有一个包含7000条记录的mysql数据库,我必须在我的网页上显示所有7000条。是否有任何提示和技巧来加快进程(浏览器在显示所有记录之前几乎崩溃)我知道我应该查询它以减少所选记录的数量但我实际上需要显示7000 ...

3 个答案:

答案 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中)... 我认为分页表是唯一可行的解​​决方案......