gpt4 book ai didi

java - Oracle clob 上的 union\minus 时发生问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:27:17 24 4
gpt4 key购买 nike

我在oracle中有一个名为“preference”的表,其中包含100多个列,我编写了一些有点复杂的SQL,需要使用关键字UNION/INTERSECT/MINUS来进行查询。举个简单的例子:

 select a.* from preference a where a.id = ? union
select a.* from preference a where a.id = ?

由于按需无限长度的字符串存储,业务护理已发生变化。需要将一列重新定义为 Clob 类型。 Oracle 不允许对 clob 类型进行联合,因此理想情况下不能在此处使用 a.*。

我将 SQL 更改为如下所示:

 select a.a,a.b,a.c... from preference a where a.id = ? union
select a.a,a.b,a.c... from preference a where a.id = ?

它列出了除 clob 之外的所有列,然后我必须进行另一个选择以将 Clob 值附加在一起。这是个好主意吗?

上述案例带来的另一个问题是:正如我提到的,这个表有很大的列,列出 sql 中的所有列,这会使 SQL 变得更长。是否有表达式可以选择所有列但删除特定列?

最佳答案

Oracle 在处理日志时不允许 union/minus,但允许 union all,也许您可​​以使用 union all 重写查询并使用 select 。在 select 子句中,您可以发出 select a。 或列出每一列。

读完你的问题后,我主要关心的是 Java 上的内存使用情况,你是否使用 orm 来加载数据?或者你正在使用jdbc api?

如果您将所有 clob 加载到某些字符串中,您可能会以 OutOfMemoryError 结束。我的建议是仅加载需要向用户显示的行(或必须处理 clob 归档的行)的 clob。

您能否更深入地了解您的应用程序(它必须处理的行数)和您的数据(特别是 clob 大小)?

关于java - Oracle clob 上的 union\minus 时发生问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com