Eclipselink batch fetch VS join fetch



什么时候应该使用"eclipselink.join-fetch",什么时候应该使用"eclipselink.batch"(批处理类型 = IN(?

联接提取是否有任何限制,例如要提取的表数?

答案始终特定于您的查询、特定用例和数据库,因此对于何时使用其中一个而不是另一个,或者是否使用任何一个都没有硬性规定。除非您认真对待性能并愿意在生产负载条件下测试两者,否则您无法确定要使用什么 - 就像任何查询性能调整一样。

Join-fetch 就是它所说的,导致所有数据在一个查询中被带回。如果您的目标是减少 SQL 语句的数量,那么它是完美的。但它是有代价的,因为内部/外部连接、笛卡尔连接等会增加发送的数据量和数据库必须完成的工作。

批量提取是一个额外的查询 (1+1(,可以通过多种方式完成。IN 收集所有外键值并将它们放入一个语句中(如果 oracle 上有>1000,则更多(。Join 类似于 fetch join,因为它使用原始查询中的条件来选择关系,但不会返回那么多数据,因为它只提取所需的行。EXISTS 与使用子查询进行过滤非常相似。

最新更新