MySQL性能-单个值的“ IN”子句与等于(=)
这是一个非常简单的问题,我假设答案是“没关系”,但无论如何我都必须问…
我有一个用PHP构建的通用sql语句:
$sql = 'SELECT * FROM `users` WHERE `id` IN(' . implode(', ', $object_ids) . ')';
假设进行了先期有效性检查($object_ids
一个数组至少包含1个项目且所有数值都是),我应该改为执行以下操作吗?
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)
开销或=
vs IN
开销。我将其称为过早优化的情况。
您应该对应用程序进行概要分析和负载测试,以了解真正的瓶颈在哪里。
以上是 MySQL性能-单个值的“ IN”子句与等于(=) 的全部内容, 来源链接: utcz.com/qa/433508.html