【发布时间】:2014-10-30 02:06:09
【问题描述】:
我们在数据库中有很多数据,有时我们需要在 IN 子句中调用超过 1000 项的 sql 语句。我知道应该重构那些 sql 语句,并且 IN 子句不应该有那么多项目,但有时关注每个 sql 查询并不容易。所以我有几个问题。
- 解决此问题的可能性有哪些?我发现了几个:
- 重构 sql 语句 - 并不总是那么容易
- 为项目创建临时表,因此 IN 子句将如下所示
... IN (SELECT id from temptable)- 可能是个好主意 - 将
IN子句分成几个IN子句,如... id IN (...) or id IN (...)
- Oracle db 对 IN 子句有限制,但我没有找到我们用于单元测试的 HSQLDB 的限制。是否可以通过 HSQLDB 中的某种配置或其他方式设置此限制?
- 关于 IN 子句的临时表 - 如何使用 HQL 创建临时表(我们在应用程序中使用 Hibernate 4.2)?有可能吗?
- 目前一些
IN子句不会超过1000 个项目,因为我们在db 中没有那么多数据。但是在应用程序开始生产后(它仍处于开发过程中)将会有更多的数据,因此我们希望为此做好准备。
您对这个问题有什么经验。你是怎么解决的?
关于我们环境的详细信息:
- 休眠 4.2
- HSQLDB 2.3.2
- 甲骨文 11g
【问题讨论】:
-
另一个很好的例子说明为什么使用不同的 DBMS 进行(单元)测试是个坏主意
标签: sql hibernate jpa oracle11g hsqldb