我有两个类似的问题:
SELECT ... FROM ... WHERE (status IN (1,2,3) OR status IN (3,4,5)) AND ... AND status IN (2,3)而这个:
SELECT ... FROM ... WHERE ... AND status IN (2,3)这些查询几乎是在同一时间执行的,这使我认为SQL引擎优化了第一个查询,并使一些类似于第二个示例。
我是对还是错?手动优化第一个查询到第二个查询是否有好处,或者我可以依赖SQL引擎?
发布于 2022-06-01 10:55:32
只要您的PostgreSQL子句中的项是常量,那么IN()在这里做的事情可能是正确的。
要验证这一点,可以运行两个以解释分析为前缀的查询,并检查执行计划。完全理解执行计划需要一些工作。但是PostgreSQL可能会将所有这些IN()子句简化为一个查找谓词。
https://stackoverflow.com/questions/72460527
复制相似问题