Php 优化数据库驱动的表显示

Php 优化数据库驱动的表显示,php,mysql,database,performance,Php,Mysql,Database,Performance,我正在修改一个PHP页面,该页面显示了我们所有的项目,以及每个项目的各种统计数据。我们看到的是从一年前的一月一日到昨天的一段时间。我已经设法使脚本的基本版本正常工作,但它的性能很差。该脚本的初始实现(不是我的修订版)一次检索所有销售记录和商品信息,然后使用结果记录创建对象(不是mysql\u fetch\u对象)。然后将它们存储在一个数组中,该数组使用硬编码值访问对象的属性。这一切的设置方式相当混乱,不容易实现可重用性。但是,它比我的实现要快得多,因为它只调用数据库一两次 我的实现使用了三个调用

我正在修改一个PHP页面,该页面显示了我们所有的项目,以及每个项目的各种统计数据。我们看到的是从一年前的一月一日到昨天的一段时间。我已经设法使脚本的基本版本正常工作,但它的性能很差。该脚本的初始实现(不是我的修订版)一次检索所有销售记录和商品信息,然后使用结果记录创建对象(不是mysql\u fetch\u对象)。然后将它们存储在一个数组中,该数组使用硬编码值访问对象的属性。这一切的设置方式相当混乱,不容易实现可重用性。但是,它比我的实现要快得多,因为它只调用数据库一两次

我的实现使用了三个调用。第一个获取为报告范围(从十二个月前的第一个月到昨天的日期)创建
DateTime
对象所需的基本报告信息。然而,这就是它的全部用途,我真的认为我甚至不需要打这个电话。第二个检索报表中包含的项目的所有基本信息。总共有854张唱片。最后一个
select
语句检索这些项目的所有销售信息,我上次检查时,返回了6000多条记录

我试图做的是只选择与循环中当前项相关的记录,如下所示

foreach($allItems as $item){
    //Display properties of item here
    //db_controller is a special class used to handle DB manipulation
    $query = "SELECT * FROM sales_records WHERE ...";
    $result = $db_controller->select($query);
    //Use sales records to calculate report values
}

这就是问题所在。为每一项调用数据库都非常耗时,并且会严重影响性能。返回的只是在脚本前面指定的时间范围内每月销售的数量总和,以及由此产生的销售金额。每个项目最多只能有13个销售记录,例如从2015/1到2016/1。但是,我不确定在循环之前对所有这些销售记录执行单个提取是否有助于提高性能,原因是我必须在结果数组中搜索与当前项目相关的销售记录的第一个实例。我能做些什么来缓解这个问题?由于这是一个对公司运营非常重要的脚本,我想确保我的脚本的性能与旧脚本一样快,或者至少比旧脚本稍微慢一点。我的结果是准确的,但速度非常慢。

听起来原始程序编写得很好(有限的SQL查询,封装在OOP设计中)。我建议你回到这一点,并尝试调整它以满足新的要求。除此之外,您的问题中没有足够的信息来真正帮助一个
SELECT
groupby
在一个查询中获得所有的“总和”。