我有一个有很多列的大表。在不同的用例中,我需要从该表中加载不同的列,但通常我不需要所有列。所以现在我想我应该从这个大表中选择必要的列。
例如,我有一个像UseCase1这样的简单POJO,我使用这个命名查询:
SELECT NEW UseCase1(t.a, t.b, t.c) FROM MyBigTable t
在更新语句中,我还只更新a,b,c字段。
所以问题是,如果我不能改变表格,这是一个很好的解决方案,以提高性能?这会改善性能吗? :)
答案 0 :(得分:1)
我们遇到了类似的情况,你可以在2个案例中看到使用这种技术的性能提升。
就像@JB所说的那样,当我们谈论表演时,没有测量它就无法最终确定。这两点是我的一般经验。
答案 1 :(得分:0)
您还可以使用@Basic(fetch = LAZY)延迟加载单个非关系字段(例如字符串),例如:
@Basic(fetch = LAZY)
private String description;
不会加载此字段的表格列。请注意,当您访问该字段时,它将延迟加载单个查询,该查询可能会成为不同的性能问题(N + 1选择)。