我想知道我是否可以加速我的进程,而这是我认为可能需要更长时间的时间。
基本上,我在db2和mysql中运行不同的select语句。我将这些结果加载到数组中以准备它们进行比较。然后我将计数数组并将它们用作条件 在我的if语句中。
问题是我有3个IF / ELSE部分,前2个执行相同的操作(执行相同的插入语句,仅基于2个不同的条件)。
$count3 holds records that exist in the table and have expired
$count4 holds records that exist in the table and have not expired
因此,如果它们都是空的,那意味着记录不存在,所以我插入。如果$ count3不为空,这意味着那些记录已经过期,所以我也插入了。如果$ count4不为空,则表示记录未过期,因此我更新。我想知道如果前两个IF / ELSE块的冗余是否需要更长的时间,那么这个冗余是不是可能。
以下是代码:
if(empty($count3) && empty($count4)){
//execute query 1
}
elseif(!empty($count3)){
//execute query 1
}
elseif(!empty($count4)){
//execute query 2
}
有没有更好的方式来表达:
if (count3 and count4 are BOTH empty) OR if(count3 is not empty){
insert
}elseif(count 4 is not empty){
updated
}
答案 0 :(得分:1)
真相表:
c3 c4 query
-------------------
empty empty 1
!empty empty 1
empty !empty 2
!empty !empty 1
所以,简化:
if (empty($count3) && !empty($count4)) {
// query 2
} else {
// query 1
}
答案 1 :(得分:1)
您的测试:
if(empty($count3) && empty($count4)){
// #1
//execute query 1
}
elseif(!empty($count3)){
// #2
//execute query 1
}
elseif(!empty($count4)){
// #3
//execute query 2
}
您的测试的真实表:
empty($count3) | empty($count4) | execute
---------------+----------------+---------
true | true | query1 (#1)
true | false | query2 (#3)
false | true | query1 (#2)
false | false | query1 (#2)
我们可以看到,query 2
仅在$count3
为空且$count4
不为空时执行。在所有其他情况下,query 1
被执行。
使用此信息,代码可以重写为:
if (empty($count3) && !empty($count4)) {
// execute query 2
} else {
// execute query 1
}
答案 2 :(得分:0)
你自己说了答案:
if((empty($count3) && emtpy($count4)) || (!empty($count3))){
}
还是我误会?
关于进程速度,if语句complixity为n。除非您拥有数十亿的数据,否则现代计算机并不多。所以检查条件"什么都不是"并不重要
答案 3 :(得分:0)
这对你有用:
<?php
if (empty($count3) && !empty($count4)){
// update the record
}else{
// insert the record
}
?>
但if语句对速度过程的影响不会大于检查条件的方式。你提到'我正在运行不同的选择语句'我认为可以/应该改变。如果要检查是否存在行,请使用mysql exists()而不是select。因为当我们的数据很大时,选择将真正影响您的执行时间。