PostgreSQL 的 IN 和 ANY 运算符:选择哪个?
PostgreSQL 提供了两种结构,IN 和 ANY,常用于将值与集合进行比较。虽然这两种结构的逻辑功能基本相同(两者都测试集合成员资格),但它们在语法和性能方面存在细微差异。
语法变体
IN 有两种语法变体:
ANY 也具有两种语法变体:
用例
性能注意事项
通常情况下,IN (集合) 和 ANY (集合) 的性能相似,如果可用,则使用索引扫描。但是,ANY (数组) 对数组使用顺序扫描,对于大型数组来说,效率可能较低。
与 = ANY (集合) 的比较
虽然 IN (集合) 和 = ANY (集合) 在逻辑上是等效的,但在某些情况下,它们可能会导致不同的查询计划。使用 IN 会强制 PostgreSQL 为集合创建一个临时表,这可能会增加开销。
通用性
ANY 比 IN 更通用,因为它可以与各种运算符(不仅仅是 =)一起使用。例如,您可以将 ANY 与 LIKE 一起使用来检查模式匹配。
排除
要查找不在集合中的行,可以使用 NOT (列 = ANY (集合))。或者,您可以为此目的使用 ALL。
NULL 值
默认情况下,具有 NULL 值的行不会通过 IN 或 ANY 比较。要包含 NULL 值,您可以将 IS NOT TRUE 与比较一起使用。
以上是PostgreSQL 中的 IN 与 ANY:您应该选择哪个运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!