Postgresql 使用ANY(或ALL)是否比手动检查ANY中的每个条目快博士后
说我想检查一下 A不等于以下任何一项:A、B、C 我可以把我的情况写成Postgresql 使用ANY(或ALL)是否比手动检查ANY中的每个条目快博士后,postgresql,database-performance,Postgresql,Database Performance,说我想检查一下 A不等于以下任何一项:A、B、C 我可以把我的情况写成 A!=全部({A,B,C})` 我也可以把它写成 A!=A和A!=B和A!=C 我知道我在这里并没有正确地使用类型(主要是为了简洁),但这个想法应该很清楚。其中一个比另一个快吗?我还不知道如何在数据库上测试这类东西:(两个版本应该产生相同的执行计划,但是如果你想去掉那句话中的虚拟语气,你应该使用EXPLAIN检查自己 顺便说一句,我建议您使用SQL标准运算符而不是!=对于第二种变体,Postgres和大多数其他数据库中没有关
A!=全部({A,B,C}
)`
我也可以把它写成
A!=A和A!=B和A!=C
我知道我在这里并没有正确地使用类型(主要是为了简洁),但这个想法应该很清楚。其中一个比另一个快吗?我还不知道如何在数据库上测试这类东西:(两个版本应该产生相同的执行计划,但是如果你想去掉那句话中的虚拟语气,你应该使用
EXPLAIN
检查自己
顺便说一句,我建议您使用SQL标准运算符
而不是!=
对于第二种变体,Postgres和大多数其他数据库中没有关于短路的硬性规定。不确定如何在引擎盖下实现ANY
。不是A=ANY('{A,B,C})`等效A!=A和A!=B和A!=CA!=ALL({A,B,C})`等效A!=A和A!=B和A!=CWoah,直到解释存在。谢谢!