当前位置: 首页 > 面试题库 >

MySQL性能-单个值的“ IN”子句与等于(=)[重复]

慎望
2023-03-14
问题内容

这个问题已经在这里有了答案

等于(=)和IN的性能差异(带一个文字值) (7个答案)

2年前关闭。

这是一个非常简单的问题,我假设答案是“没关系”,但无论如何我都必须问…

我有一个用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开销。我将其称为过早优化的情况。

您应该对应用程序进行概要分析和负载测试,以了解真正的瓶颈在哪里。



 类似资料:
  • 我有一个查询,以获得用户的朋友的数据。我有三个表,一个是user表,第二个是user_friend表,它有user_id和friend_id(都是user表的外键),第三个表是feed表,它有user_id和feed内容。饲料可以给朋友看。我可以通过两种方式查询,要么通过join查询,要么通过使用子句查询(我可以通过graph数据库获取所有朋友的ID,我正在使用它进行网络连接)。 以下是两个查询:

  • 在Spring CrudRepository中,我们是否支持字段的“IN子句”?ie类似以下的东西? 如果没有这种支持,可以考虑哪些优雅的选择?对每个id执行查询可能不是最佳的。

  • 本文向大家介绍MySQL XOR运算符与IN子句?,包括了MySQL XOR运算符与IN子句?的使用技巧和注意事项,需要的朋友参考一下 如果一个或另一个操作数(或表达式)但不是两个都为TRUE,则MySQL XOR返回TRUE。IN子句用于指定任何其他MySQL查询的条件。 让我们先创建一个表 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出-

  • 问题内容: 这个问题已经在这里有了答案 : 我可以将数组绑定到IN()条件吗? (21个回答) 2个月前关闭。 我对PDO有一个问题,在困扰了一段时间后,我真的很想得到答案。 举个例子: 我将ID数组绑定到PDO语句,以便在MySQL IN语句中使用。 该数组将说: $ values = array(1,2,3,4,5,6,7,8); 数据库安全变量为 $ products = implode(’

  • 问题内容: 我分两个步骤运行MYSQL查询。首先,通过一个查询获取ID列表,然后使用第二个查询沿的方式检索这些ID的数据。我知道这听起来很骇人听闻,但是由于查询非常复杂,我已经这样做了。第一个涉及许多几何和触发法,第二个涉及许多不同的联接。我确定它们可以在单个查询中编写,但是我的MYSQL不足以实现它。 这种方法有效,但是 感觉 不对。再加上我担心它不会扩展。目前,我正在10,000个记录的数据库

  • 问题内容: 我的一个表中有一列,其中存储多个用逗号分隔的ID。有没有一种方法可以在查询的“ IN”子句中使用此列的值。 column()的值类似于 我需要用作 我对Crozin的回​​答感到满意,但我愿意接受建议,观点和选择。 随时分享您的观点。 问题答案: 以@Jeremy Smith的FIND_IN_SET()示例为基础,您可以使用联接来完成此操作,因此不必运行子查询。 这是众所周知的非常表现