gpt4 book ai didi

php - 表中有超过 20 万行,脚本加载时间超过 20 秒

转载 作者:行者123 更新时间:2023-11-29 03:48:35 25 4
gpt4 key购买 nike

我一直在为一家公司编辑脚本,该公司专门为其业务开发了此应用程序,现在他们来找我并希望进行一些升级。整个应用程序是在 PHP 和 MySQL 中,减去几个 Python 脚本每天将 200k 记录导入数据库。我的问题是我需要允许根据事件类型对每条记录的注释进行分类和编辑。唯一的方法是通过嵌入在每条记录中的 URL,因为它是唯一真正独特的值。成功解决了这个问题,但现在页面脚本需要很长时间(24 秒)才能加载。

有人可以帮我优化这段代码吗?

$notesq = mysql_query("SELECT * FROM `campaign_event_detail_v2` WHERE `call_recording_url`<>'' AND `event_type_name`='Call'") or die(mysql_error());
while($cnD = mysql_fetch_array($notesq)) {
$callid=$cnD[0];
$getD = mysql_query("SELECT campaign_notes.note, campaign_categories.category FROM campaign_notes LEFT JOIN campaign_categories ON campaign_notes.cid = campaign_categories.cid WHERE campaign_notes.cid='".$cnD['call_recording_url']."' OR campaign_categories.cid='".$cnD['call_recording_url']."'");
$getData = mysql_fetch_row($getD);
mysql_query("UPDATE `campaign_event_detail_v2` SET `note`='".$getData[0]."',`category_id`='".$getData[1]."' WHERE `id`='".$callid."'");

}

非常感谢您的帮助!

谢谢,J

最佳答案

我认为您可以在单个查询中管理它:

UPDATE campaign_event_detail_v2 d
LEFT JOIN campaign_notes n ON n.cid = d.call_recording_url
LEFT JOIN campaign_categories c ON c.cid = n.cid
SET d.note = n.note, d.category_id = c.category
WHERE d.call_recording_url != '' AND d.event_type_name = 'Call'

根据我的理解,我不能 100% 确定这是否是正确的逻辑。如果不是,我必须道歉。但是,我的观点是:您可能可以在一个查询中完成所有操作。

您可能应该在 event_type_namecategory_idcid 等列上添加索引,如果它们还没有的话。它不会影响您的脚本,但会花费一些时间来执行,具体取决于您的表中有多少记录。

此外,使用 triggers 可能会更好而不是在每次请求时执行它。

关于php - 表中有超过 20 万行,脚本加载时间超过 20 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472146/

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