在下面的两个查询案例中,哪一个更快:
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控制流程。
提前感谢您的任何答案!
答案 0 :(得分:0)
你拥有的第二个版本会更好更清洁,但是,更简洁的单一更新也可以利用“id”列上的索引......
update t
set v = if( id = 1000000, 100, 500 )
where id in ( 1000000, 10000000 )