这是一个非常简单的问题,我假设答案是“没关系”,但无论如何我都必须问…
我有一个用PHP构建的通用sql语句:
$sql = 'SELECT * FROM `users` WHERE `id` IN(' . implode(', ', $object_ids) . ')';
假设进行了先期有效性检查($object_ids一个数组至少包含1个项目且所有数值都是),我应该改为执行以下操作吗?
$object_ids
if(count($object_ids) == 1) { $sql = 'SELECT * FROM `users` WHERE `id` = ' . array_shift($object_ids); } else { $sql = 'SELECT * FROM `users` WHERE `id` IN(' . implode(', ', $object_ids) . ')'; }
还是检查的开销count($object_ids)不值得在实际的sql语句中保存(如果有的话)?
count($object_ids)
两者在大范围内都不重要。与数据库通信的网络延迟将远远超过count($object_ids)开销或=vs IN开销。我将其称为过早优化的情况。
=
IN
您应该对应用程序进行概要分析和负载测试,以了解真正的瓶颈在哪里。