1

这样做有什么区别:

SELECT person FROM population WHERE id = 1 or id = 2 or id = 3

和 -

SELECT person FROM population WHERE id IN (1,2,3)

它们的执行方式完全相同吗?有什么区别?有没有理由让你选择一个IN而不是多个=

4

1 回答 1

3

不,它们执行相同的操作。最小化IN查询字符串。就这样。此类语句有助于查询优化。

这两个比较运算符的一个区别是IN使用 a SETof 值进行比较,这与采用单个值的“=”或“<>”不同。


根据手册

如果expr等于 IN 列表中的任何值,否则返回 0。如果所有值都是常量,则根据expr的类型对它们进行评估并排序。然后使用二进制搜索完成对项目的搜索。这意味着如果 IN 值列表完全由常量组成,则 IN非常快。

于 2012-05-27T06:21:47.573 回答