【问题标题】:Load time dropdown in php /mysql在 php /mysql 中加载时间下拉列表
【发布时间】:2021-12-28 05:54:35
【问题描述】:

我有一个允许用户将新库存添加到仓库的 php 页面。在页面上,用户可以选择位置(+/- 900 条记录)、产品(+/- 700 条记录)、连接的采购订单(1500 条+/- 记录)和客户订单(+/- 3000 条记录)。所有记录都以相同的方式在选择函数中加载(例如位置):

<select data-live-search='true' required  class='selectpicker form-control border' name='wa_ra_id' value="<?php echo isset($_POST['wa_ra_id']) ? htmlspecialchars($_POST['wa_ra_id'], ENT_QUOTES) : "";  ?>">
      <option selected="true" disabled="disabled" value="">Select rack...</option>
                <?php

                    $database = new Database();
                    $db = $database->getConnection();

                            $query = "SELECT
                               ra_id,
                               ra_number,
                               ra_section,
                               ra_zone
                            FROM racks
                            ORDER BY ra_number";

                            $stmt = $db->prepare($query);
                            $stmt->execute();

                            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                                    extract($row);
                                    echo "<option value='{$ra_id}'>{$ra_number}{$ra_section}{$ra_zone}</option>";
                            }
                ?>
</select> 

当前的问题是加载时间。当前加载时间在 11000 到 12000 毫秒之间,而 mysql 中每个查询的查询加载时间为 0.020 毫秒。有没有办法减少php的加载时间?

【问题讨论】:

  • 您尝试过检查哪个部分对这么长的持续时间负责?在单个选择字段中包含 3000 多个元素看起来非常不可用 - 也许您想使用一些与 AJAX 相关的方法来通过用户输入过滤列表?
  • 避免使用具有数百或数千个选项的选择。改用 ajax 自动完成控件,它根本不需要任何数据来加载表单页面
  • 不是单独获取每条记录,而是使用-&gt;fetchAll()一次性获取所有记录

标签: php mysql select


【解决方案1】:

试过-&gt;fetchAll()。加载时间下降到 3000ms-4000ms。 Ajax 自动完成功能完美。

【讨论】:

    猜你喜欢
    • 2015-06-10
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多