【问题标题】:Suggestions on MySQL query with multiple OR operators使用多个 OR 运算符的 MySQL 查询建议
【发布时间】:2021-05-26 21:51:00
【问题描述】:

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

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

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

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

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

MySQL 适合这个还是有更好的 DBMS/数据分析工具?

【问题讨论】:

  • 考虑创建一个包含要选择的值的表并加入该表。

标签: mysql database bigdata data-analysis rdbms


【解决方案1】:
SELECT column2  FROM tbl
    WHERE column1 IN ('A1', 'A2', ... 'A100')

这对于 100 个值来说效果相当好。

这也应该有帮助:

INDEX(column1, column2)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    相关资源
    最近更新 更多