bla*_*ic2 10 java oracle spring spring-data
我想知道是否有一种机制可以将超过1000个项目的集合处理到Spring Repository中以获取SQL IN子句.现在,我们在将项目列表传递到存储库之前拆分项目列表,但是如果驱动程序或弹簧知道Oracle的限制,那将会很好,并且会为我们工作.
围绕IN限制工作是低效的,Spring Data并不总是适合这项工作的工具.考虑以下:
成千上万的绑定值将导致潜在的兆字节SQL.将此SQL发送到数据库需要很长时间.根据Tom对"限制和转换很长的IN列表:WHERE x IN(,,, ...)"问题的回答,数据库读取SQL文本可能比执行它要花费更长的时间.
由于SQL解析,它将是低效的.解析这个长SQL不仅需要很长时间,而且每个调用都有不同数量的绑定参数,这些参数将被单独解析和计划(参见本文解释它).
SQL语句中的绑定参数存在硬限制.您可以重复OR几次以解决IN限制,但是您将在某个时刻达到SQL语句限制.
对于这些类型的查询,通常最好创建临时表.在查询之前创建一个,将所有标识符插入其中,并将其与查询中的实体表连接以模拟IN条件.
理想情况下,您可以使用存储过程替换JPA,尤其是如果要从数据库中提取数万个标识符,只是为了在下一个查询中将它们传递回数据库.
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |