使用多个 OR 运算符进行 MySQL 查询的建议

问题描述

我想对一个大表(500 多万行)执行 MysqL 查询。特定列有数千个可能的元素值,我想返回该列只有 100 个这些值的所有行。

假设此 column1 可以具有以下值:A1,A2,A3,..,A12309。我想做这样的查询

SELECT column2 WHERE column1='A1' OR column1='A2'... OR column1='A100'

拥有 100 个不同的 OR 运算符是非常低效的。

有没有更好的方法来构造这个查询

MysqL 是否适合于此,或者是否有更好的 DBMS/数据分析工具?

解决方法

SELECT column2  FROM tbl
    WHERE column1 IN ('A1','A2',... 'A100')

对于 100 个值,这将相当有效。

这也应该有帮助:

INDEX(column1,column2)

哪个版本的 MySQL? (某些版本有一个截止值——高于 IN 中的一些值会导致执行计划效率较低,尤其是对于 500M 行。)