gpt4 book ai didi

MySQL "CASE WHEN"控制 VS 多个查询

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

在下面的 2 个查询案例中,哪个更快:

update t set v = case when id = 1000000 then 100 when id = 10000000 then 500 else v end

或者

update t set v = 100 where id = 1000000;
update t set v = 500 where id = 10000000;

表 t 在 id 上有一个唯一索引,并且该表可能非常大(数百万条目)。

我的猜测是,虽然第二种情况进行多次查询,但它仍然更快,因为它可以使用索引来查找条目,而在第一种情况下,它正在对表进行全面扫描(但这只是一个猜测,我实际上不知道 MySQL 如何处理 CASE 控制流)。

预先感谢您的任何回答!

最佳答案

您拥有的第二个版本会更好更简洁,但是,也可以利用“id”列上的索引进行更简洁的单个更新...

update t
set v = if( id = 1000000, 100, 500 )
where id in ( 1000000, 10000000 )

关于MySQL "CASE WHEN"控制 VS 多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123156/

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