如何在网站上展示200k可选记录

时间:2013-04-24 08:38:52

标签: php

我的网站上有很大的问题,我有这个功能从数据库中获取所有类别: -

public function selectallcatdata()
{
    $query = mysql_query("select Category_name,Category_id from category where Category_delete='0'");
    return $query;
    mysql_free_result($query);
}

我在这样的选择类型上使用此功能: -

<select name="txtCompanyCat" id="txtCompanyCat">
<option selected value="">choose the Category ... </option>
<?php 
$CategoryNameData = $select -> selectallcatdata();
while($CatNameRow = mysql_fetch_array($CategoryNameData)){
    $CatID = $CatNameRow['Category_id'];
    $CatName = $CatNameRow['Category_name'];
?>
<option value="<?php echo $CatID; ?>"><?php echo $CatName; ?></option>
<?php } 
unset($CatID);
unset($CatName);
?>
</select>

所以,问题是我在这个表上有251932行,我们必须从我的表中显示所有这些行,我该如何解决这个问题。

4 个答案:

答案 0 :(得分:3)

一个包含251,932项的选择框几乎不实用。我建议您在前端使用AJAX自动完成功能,这样您就可以一次获取更少的结果。 其中有一些herehere等等。您可以根据自己的要求挑选。 This one非常适合常规选择;我曾经做过一段时间。

答案 1 :(得分:1)

您是否尝试过对您的网站进行基准测试,以找出延迟的来源?我很相信,有了那么多记录,它就是查询时间和渲染时间。这只是太多的数据。为数据库查询实现一些缓存可能有助于一方,但我认为数据库并不是真正的主要问题。

您必须避免显示所有类别。没有其他方法可以处理这样的事情。我可以想象两种可能对你有用的方法:

  1. 您尝试将类别分类为几个超类别和 用户首先选择那些超级类别,然后选择 属于它的类别将是延迟加载的(可能通过AJAX)。

  2. 您可以提供一个输入字段,显示清单,而不是显示所有的故障 根据用户在字段中输入的内容建议的类别。

  3. 尝试通过分析所有匹配类别来获取匹配类别列表可能是个好主意 用户输入的其他数据。考虑它可能的可用值的数量 值得投入时间来构建文本挖掘方法来处理这个问题。

  4. 最明显的是减少类别数量,但我想这是不可能的。

    哦,并且旁注:return过早地结束了函数执行,因此永远不会到达mysql_free_result($query);。无论如何,这是错误的地方。完成处理后,您应该释放结果。

答案 2 :(得分:0)

我建议如果它是静态查询,您可以缓存结果而不是每次都获取它。它肯定会第一次加载,但对于以后的请求它不会是一个问题。

答案 3 :(得分:0)

将选择框更改为搜索框,然后将ajax调用为php。