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

回到顶部