我的Sql Case与PHP if-else性能相同

时间:2013-12-21 05:57:51

标签: php mysql performance

我陷入了使用条件块语句的情况: 所以我想知道哪个快点

  

mysql案例表达式 if-else 之间的性能   条件。

我的表达如下

  1. 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;
    }
    
  2. 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'];
    
  3. 我需要一个更快的解决方案。所以请告诉我哪个更推荐。

2 个答案:

答案 0 :(得分:0)

您可以自己做一些基准测试,看看哪一个最适合您。但是,在大多数情况下,您提供的两种替代方案之间的性能不会有任何差异。

您应该考虑的其他事项是代码可读性和可维护性。将问题分成几部分被认为是最佳做法。因此,如果你的if-else条件是关于业务流程的,那么它应该是PHP。否则,您可以将其放入数据(mysql)

答案 1 :(得分:0)

PHP路线将明显加快。无论MySQL引擎在内部处理CASE语句的速度有多快,API开销和资源使用都会使MySQL路由明确变慢。

话虽如此,基于项目设计问题,可能有合理的理由在MySQL中执行CASE。