gpt4 book ai didi

mysql使用索引的case when语法

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

我正在编写一个使用以下语法更新的查询:

UPDATE foo SET col1 = CASE col2
WHEN 1 THEN 3
WHEN 2 THEN 9
...
ELSE col1 END
WHERE col2 IN (1,2...)

请注意,WHEN THEN 情况可能有数千种。 EXPLAIN 显示 PK 将用于 IN 子句,但是数据库在基于 IN 子句过滤后如何计算 CASE/WHEN - 它是扫描所有它们还是使用哈希?我不认为这在 EXPLAIN 中是明确的(例如没有 IN 子句)。

最佳答案

代替数千个 case when 语句,在您的数据库中创建另一个表(我们将其命名为 keyValueTable)并让一列为 when(键),另一列为 then(值):

id      colkey     value
1 1 3
2 2 9

使colkey唯一并在其上设置索引,然后像这样查询数据库

 UPDATE foo SET col1 = (
SELECT value from keyValueTable
INNER JOIN foo ON keyValueTable.colkey = foo.col1
LIMIT 1
)
WHERE ...

关于mysql使用索引的case when语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844963/

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