gpt4 book ai didi

Mysql更新多个条件使速度变慢

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

我正在运行此更新,但 MySQL 需要很长时间才能完成,大约 2 分钟。他们有36个条件才能做到这一点。

我的更新是这样的:

UPDATE table
SET delete = NULL
WHERE date > '2016-11-20 00:00:00' AND (t.text LIKE '%text1%')
OR (t.text LIKE '%text2%')
OR (t.text LIKE '%text3%')
OR (t.text LIKE '%text4%')
OR (t.text LIKE '% text 5%')
...
...
...
...
OR (t.text LIKE '%text36%')

更新完成了,但是花了很长时间,知道如何优化它吗?

最佳答案

首先,修复查询(按照 Jorge 的建议):

UPDATE table
SET delete = NULL
WHERE date > '2016-11-20 00:00:00' AND
(t.text LIKE '%text1%' OR
t.text LIKE '%text2%' OR
t.text LIKE '%text3%' OR
t.text LIKE '%text4%' OR
t.text LIKE '% text 5%'
...
t.text LIKE '%text36%'
);

这可能不是一个很大的改进,但 regexp 可能会更快:

UPDATE table
SET delete = NULL
WHERE date > '2016-11-20' AND
t.text REGEXP 'text1|text2|text3| . . . |text36';

唯一有帮助的索引是日期。我建议表格(日期,文本)日期条件看起来很有选择性。

最后,您可能会发现全文索引适用于文本。这取决于实际执行的逻辑(例如,“文本”模式单词)。

关于Mysql更新多个条件使速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710465/

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