【发布时间】:2012-07-24 06:26:14
【问题描述】:
我知道 SQL IN 子句中有 1000 个项目的限制。
目前,我在选择查询的“IN”子句中使用逗号分隔的项目字符串,我想更改它。
所以,我找到了this,它声明使用JOIN 或在IN 本身内部传递查询。
应该首选哪一个?
编辑(另一个问题):
在“IN”子句中传递查询和在“IN”子句中传递逗号分隔参数有什么区别?
【问题讨论】:
-
数据库优化器将以相同的方式执行这两个变体。您可以使用看起来更好的那个。 :)
-
您实际上是否在
in子句中使用包含 1,000 个逗号分隔项的查询? 0_0 Srsly,将它们放在一个表中并适当地加入。 -
@JackManey:不是现在,但将来有机会。
-
@HardikMishra - 在这种情况下,将它们放在一个表中并适当地加入(或使用
in语句,例如column in (select column from table_with_tons_of_values_oh_god_dont_want_to_list_them_all))。 -
@Andomar:请粘贴您的评论作为答案。我发现它很有帮助
标签: sql performance