我陷入了使用条件块语句的情况: 所以我想知道哪个快点
mysql案例表达式和 if-else 之间的性能 条件。
我的表达如下
Php条件阻止:
$data=mysql_fetch_assoc(mysql_query("select action,state from my_table"));
if($data['action']==2 && $data['state']==0){
$state=1;
}
else{
$state=0;
}
MySql条件:
$data=mysql_fetch_assoc(mysql_query("select case when action = 2 and state = 0 then 1 else 0 end as state"));
$state =$data['state'];
我需要一个更快的解决方案。所以请告诉我哪个更推荐。
答案 0 :(得分:0)
您可以自己做一些基准测试,看看哪一个最适合您。但是,在大多数情况下,您提供的两种替代方案之间的性能不会有任何差异。
您应该考虑的其他事项是代码可读性和可维护性。将问题分成几部分被认为是最佳做法。因此,如果你的if-else条件是关于业务流程的,那么它应该是PHP。否则,您可以将其放入数据(mysql)
答案 1 :(得分:0)
PHP路线将明显加快。无论MySQL引擎在内部处理CASE语句的速度有多快,API开销和资源使用都会使MySQL路由明确变慢。
话虽如此,基于项目设计问题,可能有合理的理由在MySQL中执行CASE。