Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用大数据从数据库表中获取数据时需要更多的等待时间_Php_Mysql - Fatal编程技术网

在PHP中使用大数据从数据库表中获取数据时需要更多的等待时间

在PHP中使用大数据从数据库表中获取数据时需要更多的等待时间,php,mysql,Php,Mysql,我有两张表,像“employee”和“employeeleaves”。我只是想计算一下员工一年中休假的天数employeeleaves'表包含过去三年的休假详细信息。 Im使用adodb.inc.php lib文件进行数据库连接。 我有50份员工记录和1000份休假记录。我的应用程序大约需要1分钟来获取数据并显示。当我在谷歌浏览器->开发者工具->网络,等待(TTFB)-38.46s中看到这个 我想减少这一时间。因为一旦“employeeleaves”表获得更多数据,那么等待时间就会增加。 下面

我有两张表,像“employee”和“employeeleaves”。我只是想计算一下员工一年中休假的天数employeeleaves'表包含过去三年的休假详细信息。 Im使用adodb.inc.php lib文件进行数据库连接。 我有50份员工记录和1000份休假记录。我的应用程序大约需要1分钟来获取数据并显示。当我在谷歌浏览器->开发者工具->网络,等待(TTFB)-38.46s中看到这个

我想减少这一时间。因为一旦“employeeleaves”表获得更多数据,那么等待时间就会增加。 下面我粘贴了我的数据获取编码,首先我获取员工列表,并为每个员工计算特定年份的假期

$employee = new Employee();
        $employees = $employee->Find("1=1");        
        foreach($employees as $employee){

$employeeLeave = new EmployeeLeave();
        $employeeLeaves = $employeeLeave->Find("employee = ? and leave_period = ? and leave_type = ? and status = ?",
        array($employeeId,'2016','SickLeave','approved'));
        if(!$employeeLeaves){
            error_log($employeeLeave->ErrorMsg(),true);
        }       
        return $employeeLeaves;
}
以上代码用于请病假,我也将使用同样的代码来请临时假

我只是想知道,我是否可以进行此查询以仅扫描包含休假期间为“2016”的行

employeeleaves表-字段名称

+-------------------------------------------------------------------------------------------+
| id, employee, leave_type, leave_period, date_start, date_end, details, status, attachment |
+-------------------------------------------------------------------------------------------+
你好吗

您有两个表,为什么不创建一个查询以加入MYSQL

那会好得多

SELECT * FROM employee e
INNER JOIN employeeLeave el
ON(el.employee = e.id)
你好吗

您有两个表,为什么不创建一个查询以加入MYSQL

那会好得多

SELECT * FROM employee e
INNER JOIN employeeLeave el
ON(el.employee = e.id)

我不确定运行查询速度太慢是否是您的应用程序的错。您是否在mysql中激活了slowlog?它在哪台机器上运行?此外,您是否可以直接在数据库上手动执行查询,以查看查询本身是否同样慢?您是否可以向我们展示EmployeeLeave类,特别是MySQL workbench中的Find方法,当我执行相同操作时,当我给出确切的年份和休假类型时,它会在0秒内显示结果。但是在这个编码中,我必须为所有员工循环。对于每个员工,我都在读同一个表。我不确定运行查询速度太慢是否是你的应用程序的错。您是否在mysql中激活了slowlog?它在哪台机器上运行?此外,您是否可以直接在数据库上手动执行查询,以查看查询本身是否同样慢?您是否可以向我们展示EmployeeLeave类,特别是MySQL workbench中的Find方法,当我执行相同操作时,当我给出确切的年份和休假类型时,它会在0秒内显示结果。但是在这个编码中,我必须为所有员工循环。对于每个员工,我都在读取相同的表。我使用adodb活动记录方法。我不知道如何使用join。看这个:我使用adodb活动记录方法。我不知道如何使用join。请看: