代码之家  ›  专栏  ›  技术社区  ›  benhowdle89

显示大量mysql记录

  •  0
  • benhowdle89  · 技术社区  · 15 年前

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

    3 回复  |  直到 15 年前
        1
  •  0
  •   Jon Black    15 年前

    打开输出缓冲: 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条记录也可以正常工作

    编辑2

    http://phplens.com/lens/php-book/optimizing-debugging-php.php

    以上链接摘录:

    另一种加速上面的方法 代码将使用输出缓冲。 这将累积输出字符串 在内部发送输出 在剧本结尾处拍摄。这个 减少网络开销 基本上要付出更多的代价 内存和延迟的增加。在 我的一些代码完全由 echo语句,性能 提高了15% 观察。

        2
  •  0
  •   Buhake Sindi Tesnep    15 年前

    我假设您使用的是PHP(我不熟悉),但这对所有语言都是通用的。

    首先查询7000条记录到一个列表中,然后在脚本页面中显示所有列表(例如php、jsp for java等)。不要让php页面打开连接,读取列表中的每个项目并显示它们。客户端(浏览器)可能会无限期等待并导致 会话超时

        3
  •  0
  •   malejpavouk    15 年前

    f00:如果他将结果显示在表格中,并且浏览器将继续显示数据,则无论如何它们都不会正确显示。据我所知,该表无法正确呈现(在firefox中)。。。 我认为分页表是唯一可能的解决方案。。。