代码之家  ›  专栏  ›  技术社区  ›  Silver Light

MySQL查询优化:IN()vs OR

  •  6
  • Silver Light  · 技术社区  · 14 年前

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

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

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

    SELECT *
    FORM `somewhere`
    WHERE 
      `id` IN (3,5,15,56,34,47)
    
    2 回复  |  直到 14 年前
        1
  •  9
  •   Mark Byers    14 年前

    第二种方法更好。MySQL可以优化这个。

    MySQL对使用IN()语句的查询有问题-有时不能使用索引。如果我不使用子查询,真的是这样吗?

    当你写作的时候可能会有问题 IN(SELECT ...) ,但我认为简单的值列表没有问题。

        2
  •  2
  •   cristian    9 年前

    如果您真的想使用索引,可以在这里使用UNION read more mysql-followup-on-union-for-query-optimization-query-profiling