MySQL 查询优化 : IN() vs OR

标签 mysql query-optimization

我一直在阅读,MySQL 在使用 IN() 语句的查询中存在问题 - 有时无法使用索引。如果我不使用子查询,真的是这样吗?

哪种方法更好?有性能差异吗?

1

SELECT *
FORM `somewhere`
WHERE 
  `id` = 3
   OR `id` = 5
   OR `id` = 15
   OR `id` = 56
   OR `id` = 34
   OR `id` = 47

2

SELECT *
FORM `somewhere`
WHERE 
  `id` IN (3,5,15,56,34,47)

最佳答案

第二种方法更好。 MySQL 可以对此进行优化。

MySQL has a problem with queries that use IN() statement - sometimes indexes can't be used. Is that really so, if I don't use a subquery?

当您编写 IN(SELECT ...) 时,IN 可能会出现问题,但我认为简单的值列表不会出现问题。

关于MySQL 查询优化 : IN() vs OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286403/

相关文章:

java - android 和 RESTful ws 之间发送的数据类型

mysql - 在数据透视表旁边添加复选框,这些复选框将添加到数据透视表中的最后一行信息

mysql - SQL LIMIT 语法错误

php - 让我的查询更短、更快、更好

mysql - 与 MySQL 5.7.30 相比,MariaDB 10.4.13 性能较慢

mysql - 如何从巨大的表中加速 JOIN 和 GROUP BY - 100 亿行

sql - 我应该合并这些查询吗?如果是,该怎么做?

mysql - CiviCRM CRM_Core_DAO::VALUE_SEPARATOR 如何在纯 SQL 中使用它

php - android如何使用php页面代码连接MySQL数据库?

mysql - 优化 select 中的派生表