MySQL 查询时候用 select (case when x=y then m else n end), (if x=y, m, n) from test, 里面用到 case 与 if 两个函数,
从字数上来看, case 比 if 要多,
从性能上来比较,用 case 会比用 if 要慢还是要快?或者其实是一样?
请帮忙看下,谢谢。
...全文
13993打赏收藏
MySQL 查询用 Case If 的性能
Hi, MySQL 查询时候用 select (case when x=y then m else n end), (if x=y, m, n) from test, 里面用到 case 与 if 两个函数, 从字数上来看, case 比 if 要多, 从性能上来比较,用 case 会比用 if 要慢还是要快?或者其实是一样? 请帮忙看下,谢谢。
实际上很多函数内部的逻辑就是case when,比如有一个函数是nullif,这个函数在sql server,oracle,mysql了都有,就是比如:
nullif(0,1):就是如果第一个参数值是null,那么返回1,说白了就是 case when 参数1 is null then 参数2 else 参数1 end
所以,说到底,if函数逻辑也是一样的,性能区别不多。
sql语句一般来说最大的性能消耗,就是查询数据的过程,如果进行的判断比较次数越少,要读取的数据越少,性能就会越高,至于 if 和case when这种语句,最后转换成 机器指令之后,基本上可以忽略不计,因为cpu速度是非常之快的,而读取数据本身要经过硬盘,好的化也要经过内存,cpu的速度比这些快上几千倍