gpt4 book ai didi

mysql - 有没有更好的方法来运行这个 mysql 更新?

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

我有以下代码,它首先从数据库中检索每个独特的样式,然后搜索产品表以查找与每个样式关联的术语,并使用 styleid 和 productid 更新 stylerefs 表:

$query = "Select id,style,terms from su_styles";

if ($results = $sudb->query($query)) {

while($result = $results->fetch_array(MYSQLI_ASSOC)) {

$id=$result['id'];
$style=$result['style'];
$terms=$result['terms'];

$query= "INSERT IGNORE INTO su_stylerefs (mykey,id)
SELECT mykey,$id FROM su_pref where (match(name) against ('$terms' in Boolean Mode))
ON DUPLICATE KEY UPDATE id=$id, mykey = su_pref.mykey";

$sudb->query($query);

我是否可以将此查询重写为一个查询,而不是循环遍历第一个查询的结果?我还有 10 个其他类似的查询需要每天运行,第一个查询中的一些表可能有 100 条记录,这意味着与数据库的数百个连接,这需要一段时间。

提前致谢

最佳答案

我会首先获取所有这些行以及 match() 案例,然后进行更新:

INSERT INTO su_stylerefs (mykey, id)
VALUES ($mykey[0], $id[0]), ($mykey[1] $id[1]), ...
ON DUPLICATE KEY UPDATE id=$id, mykey = su_pref.mykey

第二种解决方案:

INSERT IGNORE INTO su_stylerefs (mykey,id) 
SELECT sp.mykey, ss.id
FROM su_styles AS ss
INNER JOIN su_pref AS sp
ON match(sp.name) against (ss.terms in Boolean Mode)
ON DUPLICATE KEY UPDATE id = VALUES(id), mykey = VALUES(mykey)

这可能是一个更好的解决方案。

关于mysql - 有没有更好的方法来运行这个 mysql 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10163258/

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