我有一个超过 5000 行的表。每行都有一个类别,我想在我的程序中使用这些行。问题是我每次在类里面分析这些行吗?或者每次只获取类需要的数据,并让每个类决定使用哪些数据。我知道我的解释很困惑,但是看看这些例子。
PEOPLE
--
ID NAME CAT AGE
------------------------------------
1 Brad 5 23
2 Goy 3 19
2 Romeo 5 34
2 Deborah 5 40
.. .. ..
5000 Bob 1 56
现在我只想分析带有 cat = 5 的行,并且每一行都是一个对象。
First Solution
SELECT * FROM people Where CAT = 5
and then in php make each class analyze the all data ?
foreach($people as $p)
{
if($p['age'] == 20)
do......
}
<小时/>
Second solution
in each class put a function to get the data
function get_data
{
$query = 'SELECT * FROM people WHERE cat = 5 AND age = '.$this->age.'';
then do....
}
我有很多行 5000 这是一个例子,请帮助我并给我更有效的解决方案 第一个将访问数据库一次,但相同的数组将在每个类中循环(不好) 第二个将多次访问数据库,但会带来确实需要的数据。
最佳答案
由于没有给出详细信息,答案肯定是使用 SQL 查询过滤数据,原因有很多。虽然在某些情况下无法进行数据库级处理(例如,当涉及更复杂的业务逻辑时),但通常您应该始终尝试在数据进入高级代码之前对其进行过滤。
这正是工作数据库的发明目的。
在您的示例中,首先将您的所有年龄收集到一个数组中,然后运行以下查询:
$sql = 'SELECT * FROM people WHERE cat = 5 AND age IN (' . implode(',', $ages) . ')';
如果您使用 MySQL,则允许的 IN 集大小很大(默认为 32 Mb),这应该足够了。
关于php - 在 php 或 MYSQL 中分析数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869029/