这样做有什么区别:
SELECT person FROM population WHERE id = 1 or id = 2 or id = 3
和 -
SELECT person FROM population WHERE id IN (1,2,3)
它们的执行方式完全相同吗?有什么区别?有没有理由让你选择一个IN
而不是多个=
?
不,它们执行相同的操作。最小化IN
查询字符串。就这样。此类语句有助于查询优化。
这两个比较运算符的一个区别是IN
使用 a SET
of 值进行比较,这与采用单个值的“=”或“<>”不同。
根据手册:
如果expr等于 IN 列表中的任何值,否则返回 0。如果所有值都是常量,则根据expr的类型对它们进行评估并排序。然后使用二进制搜索完成对项目的搜索。这意味着如果 IN 值列表完全由常量组成,则 IN非常快。