在开发过程中,有一些代码在语法上没有任何问题,但在执行上会有较大的时间成本浪费。比如有这样的代码,如代码清单1-35所示:
代码清单1-35 未经优化的SQL执行
<?php $user_ids = array(101200,101201,101202,101203); foreach($user_ids as $user_id){ $sql = "SELECT * FROM users WHERE user_id= $user_id "; $res = mysql_query($sql); //Execute Query ...... }?>
大家看到这种代码,是不是有种似曾相识的感觉?是的,这种代码对一些开发者来说并不陌生。这种程序每次都要重复遍历查询MySQL,造成时间的浪费和数据库的压力。
我们不妨转换成下面的代码样式,如代码清单1-36所示:
代码清单1-36 优化后的SQL查询
<?php $user_ids = array(101200,101201,101202,101203); $user_ids_str = "'".implode("','",user_ids)."'"; $sql = "SELECT * FROM users WHERE user_id= $user_id "; $res = mysql_query($sql); //Execute Query ......?>
从源代码上来做比较,第二段代码只执行了一次查询就已经完成了任务。
类似于这样的代码很多。它们从语法上并无显式错误,但性能上可差了不少。因此,在开发中,需要我们更多地深入考虑细节,机器是按我们的“旨意”在执行的,效率和成本取决于人。