gpt4 book ai didi

php - 将记录从表复制到另一个表时提高性能

转载 作者:行者123 更新时间:2023-11-30 22:11:36 24 4
gpt4 key购买 nike

嗨,伙计们:)我需要创建一个 php 代码来处理存储在数据库中的一些 worker 数据。我得到了想要的结果,但它需要几秒钟和几秒钟(几秒钟和几秒钟!>.<)才能完成,所以恐怕我没有以正确的方式做某事:(

worker 的数据存储在mysql表(table1)中,如下所示:

enter image description here

我得到了一对日期:initial_date (a) 和 final_date (b),所以我的目标是将给定 worker 的数据复制到一个新的表(table2),一天一天从a到b。预期的表格应该如下图(这个表格后面会作为进一步操作的依据,不属于问题的一部分)

enter image description here

要求覆盖 a 和 b 日期之间的任何现有数据,并“跳转”周末和假期。

为了实现我的目标,我正在对此进行编码(假设已完成连接和所有操作,并提供了 checkworkingday 函数):

$initialdate = '2016-10-10';
$finaldate = '2016-10-12';

$x = $initialdate;

do {
if (checkworkingday($x) == true) {
$query = mysqli_query($connection,"SELECT name,task FROM table1");
while($row = mysqli_fetch_array($query)) {
$task = $row['task'];
$worker = $row['name'];
$query2 = mysqli_query($connection,"SELECT task FROM table2 WHERE name = '$worker' AND date = '$x'");
$row2 = mysqli_fetch_array($query2);
$existingtask = $row2['task'];
if (!isset($existingtask)) {
mysqli_query($connection,"INSERT INTO table2 (date,name,task) VALUES('".$x."','".$worker."','".$task."')");
} else {
mysqli_query($connection,"UPDATE table2 SET task = '".$task."' WHERE date = '".$x."' AND worker = '".$name."'");
}
}
}
$x = date('Y-m-d', strtotime($x . "+1 day"));
} while ($x <= $finaldate);

如示例所示仅3天,需要很长时间才能结束;并且持续数周或数月需要非常非常长的时间(甚至超过最大执行时间,具体取决于日期范围!)。

我是新手,我知道代码很“土气”,但我已经修改并检查了代码和信息,但没有获得更好的性能。我究竟做错了什么?谢谢:)

最佳答案

尝试INSERT.. SELECT,而不是循环遍历整个数据:

INSERT INTO table2 (date,name,task)
SELECT date,name,task
FROM Table1
WHERE < >;

关于php - 将记录从表复制到另一个表时提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39943262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com