php - 在 php 或 MYSQL 中分析数据?

标签 php mysql

我有一个超过 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/

相关文章:

尝试 SSL 连接时 PHP 的 FTP 功能

php - 在 SilverStripe ModelAdmin 中搜索关系记录

php - 如何使用 mysqli 在事务中仅创建部分查询?

php - 如何使用 PHP 和 MYSQL 从表中获取信息到另一个页面?

mysql - 在 where 子句中包含 PHP 函数?

php - codeigniter 不同的 mysql 查询

php从mysql中获取多个数据

php - mysqli 查询 [事件记录 Codeigniter]

java - mysql故障转移后如何用从数据库的数据更新主数据库

MySQL 准备语句与简单查询性能