性能问题在php和mysql页面


Performance issue in a php and mysql page

我遇到了一些性能问题与php和mysql页面。

我有一个类似

的代码
mysql statement
    while loop fetching the record
    {
        foreach($somearray)
          {
            Another mysql statement while fetch records using a where clause using $somearray key and 1st while loop result row data.
           }
     }
    /*end while*/

mail语句占用462条记录,每条记录运行12次。页面加载非常缓慢,当我评论第二个mysql语句时,它加载得很快。

那么我应该采取什么措施来更快地获取数据,对此有什么解决方案吗?

/**问题更新**/

一个表是行方式的,也就是说primary ID是主要的。

第二个表的数据是在多行,即相同的ID从第一个表将有多行,我需要从第二个表中获取特定的月份数据,并加入这两个并显示在一个表中。

所以我使用foreach来循环月份。

您可能会对每个顶级实体发出N+1(用ORM术语来说)查询。您应该连接数据,至少避免嵌套循环。

如果查询中的每一行运行12个单独的查询,那么在该时间段内您将运行超过5500个查询。如果每个查询花费10毫秒(乐观),那么您仍然需要55秒才能完成MySQL查询。我会尝试删除或优化您的代码/查询,以尽量减少服务器上的负载。

一般的想法是,如果你不能帮助它,不要嵌套查询。

编辑

一次从两个表中获取信息,你可以使用MySQL的连接,它将显示两个表中的所有信息,你可以运行where子句或通过循环来获取所有指定的数据

SELECT * FROM tableName AS t1 INNER JOIN tableName2 AS t2 ON t1.name = t2.name;

你对MySQL结果做了很多很多次繁重的操作。也许你想获取你的第一个记录到一个PHP数据结构中,然后你可以使用它来执行第二个查询。

你也可以考虑使用PDO,也许事情可以加速,当语句被缓存。我想,foreach循环中的语句总是相同的,只有参数发生了变化。