我必须通过php代码从db搜索大量数据。我不想给很多db命中。所以我选择了来自db的所有数据进行搜索并尝试将其存储在数组中以进一步搜索不在db上的数组,但问题是数据超出了数组的限制。 怎么办?
答案 0 :(得分:19)
不要这样做。
数据库专门用于处理大量数据。数组不是。
最好的办法是正确索引数据库,然后编写优化的查询,从数据库中获取所需的数据。您可以使用PHP来构造查询。你可以通过一个好的查询从db获得几乎任何东西,不需要PHP数组处理。
如果您给出了一个具体示例,我们可以帮助您构建该SQL查询。
答案 1 :(得分:4)
数据库可以为您过滤数据。尽可能使用最准确的查询,只有在SQL中太难(或不可能)才能过滤代码。
对于具有适当select
的正确索引where
,完整表选择可能会更昂贵(特别是对于数据库服务器上的I / O,并且它可能对服务器的缓存产生可怕影响) }(s)。
答案 2 :(得分:2)
从数据库获取记录到PHP时会涉及通信开销,因此减少从PHP到数据库的调用次数不仅是一个好主意,而且最小化返回的元素数量也是理想的。数据库并在PHP代码中处理。您应该构建查询(取决于数据库的类型),只返回您需要的条目或尽可能少的条目,以满足您的任何需要。有许多数据库直接在数据库查询中支持相当复杂的操作,通常数据库的执行速度比PHP快。
答案 3 :(得分:1)
两个简单的步骤:
通过memory_limit设置增加php可以使用的内存量
安装更多内存
说真的,您最好以一种可以快速提取所需数据的方式优化数据库。
如果您遇到问题,请运行查询分析器以查看哪些查询花费了太多时间。修复它们。重复这个过程。
答案 4 :(得分:0)
memory_limit
(或使用所需的内存限制php_value memory_limit '1024M'
更新.htaccess)