如何在php中存储大量数据?

时间:2011-03-18 07:12:19

标签: php mysql sql database arrays

我必须通过php代码从db搜索大量数据。我不想给很多db命中。所以我选择了来自db的所有数据进行搜索并尝试将其存储在数组中以进一步搜索不在db上的数组,但问题是数据超出了数组的限制。 怎么办?

5 个答案:

答案 0 :(得分:19)

不要这样做。

数据库专门用于处理大量数据。数组不是。

最好的办法是正确索引数据库,然后编写优化的查询,从数据库中获取所需的数据。您可以使用PHP来构造查询。你可以通过一个好的查询从db获得几乎任何东西,不需要PHP数组处理。

如果您给出了一个具体示例,我们可以帮助您构建该SQL查询。

答案 1 :(得分:4)

数据库可以为您过滤数据。尽可能使用最准确的查询,只有在SQL中太难(或不可能)才能过滤代码。

对于具有适当select的正确索引where,完整表选择可能会更昂贵(特别是对于数据库服务器上的I / O,并且它可能对服务器的缓存产生可怕影响) }(s)。

答案 2 :(得分:2)

从数据库获取记录到PHP时会涉及通信开销,因此减少从PHP到数据库的调用次数不仅是一个好主意,而且最小化返回的元素数量也是理想的。数据库并在PHP代码中处理。您应该构建查询(取决于数据库的类型),只返回您需要的条目或尽可能少的条目,以满足您的任何需要。有许多数据库直接在数据库查询中支持相当复杂的操作,通常数据库的执行速度比PHP快。

答案 3 :(得分:1)

两个简单的步骤:

  1. 通过memory_limit设置增加php可以使用的内存量

  2. 安装更多内存

  3. 说真的,您最好以一种可以快速提取所需数据的方式优化数据库。

    如果您遇到问题,请运行查询分析器以查看哪些查询花费了太多时间。修复它们。重复这个过程。

答案 4 :(得分:0)

  1. 您不需要将数据存储在数组中,这没有任何意义。根据您的目的相应地构建查询,然后使用PHP获取数据。
  2. 如果需要增加内存限制,可以在php.ini中更改memory_limit(或使用所需的内存限制php_value memory_limit '1024M'更新.htaccess)
  3. 最后但并非最不重要的-使用分页,而不是一次加载整个数据。