gpt4 book ai didi

php - 优化此 SQL 查询

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

我在 foreach 循环中有一个 SQL 查询。有时可能有很多,我的意思是有很多查询要做,这取决于几个标准,最多可能有 78 个查询。

现在,我知道过早的优化是万恶之源,但我不想看到 78 个查询 - 它只是不健康。

代码如下:

$crumbs = explode(",", $user['data']['depts']);

foreach ($crumbs as &$value) {
$data = $db->query("SELECT id FROM tbl_depts WHERE id = '" . $value . "'");
$crumb = $data->fetch_assoc();
$dsn = $db->query("SELECT msg, datetime FROM tbl_motd WHERE deptid = '" . $value . "'");
$motd = $dsn->fetch_assoc();
if ($motd['msg'] != "") {
<?php echo $motd['msg']; ?>
}
}

我能做得更好吗?

最佳答案

使用IN MySQL operator搜索 id 的一组值:

$ids = '"' . implode('", "',$crumbs) . '"';
$query1 = "SELECT id FROM tbl_depts WHERE id IN (" . $ids . ")";
$query2 = "SELECT msg, datetime FROM tbl_motd WHERE deptid IN (" . $ids . ")";

因此您不需要使用 foreach 循环检索您需要的所有数据,因此您将只有 2 个查询而不是 78 个。

示例:我有一个名为 table 的表,其中包含 10 条记录,其 ID 为:1,2,3,4,5,6,7,8,9,10(自动递增)。我知道我需要 ID 为 1、5、8 的记录。我的查询将是:

$sql = "SELECT * FROM `table` WHERE id in (1,5,8);";

而且我不明白如果不修改 $crubms 为什么需要在 foreach 循环中使用 & 运算符数组值。

关于php - 优化此 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487778/

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