【问题标题】:MySQL number of items within the query “OR clause”MySQL 查询“OR 子句”中的项目数
【发布时间】:2018-01-16 14:01:28
【问题描述】:

查询中包含“OR”语句的项目数量是否有限制? 查询的包大小有限制吗?

例子:

select * from tablename where id = 2 OR id =4 OR ID = 9;

还有什么替代选项?

【问题讨论】:

  • 你可以用 in 代替 or。据我所知,限制是查询的长度

标签: mysql performance limit


【解决方案1】:

更好的选择是:

SELECT * FROM tablename WHERE id IN(2, 4, 9);

关于大小限制,Oracle等其他数据库在IN中可以放入的数据数量限制为1000,但MySQL的限制取决于max_allowed_packet的值.

【讨论】:

  • 我在 IN 子句中看到了 70K 个数字(在 MySQL 中)。
  • 哇,我不确定我是否真的能掌握这么多数字需要什么?
  • 该表有超过十亿行; 70K有点慢,但确实有效! (不,我不知道他们为什么需要这样。)
  • 我们正在清理无用数据。这就是为什么它作为参数传递。我知道还有其他解决方案,而不是在查询中传递它。
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多