什么是更快的java如果\ else或sql的情况下

时间:2013-11-26 21:45:05

标签: java sql oracle

我有一个返回数千条记录的查询(在某些时候它会返回)。在那个查询中,我有一些像这样的

Case when column in(:params1)
then :param2
when column in (:params3)
then :param4
when column in(:params5)
then :param6
when column in(:params7)
then :param8
END ABC

现在问题是在查询中执行此操作更好或返回列值并在pojo中执行if \ else?为什么?我试过测试它,但目前没有那么多的数据。

2 个答案:

答案 0 :(得分:2)

通常,让数据库尽可能多地为您完成工作会更好(因为性能和复杂性)。在应用程序中完成工作可能会产生超出必要的网络流量(这会降低性能),并且代码必须包含其中所有令人讨厌的逻辑,否则会增加复杂性。

还记得avoid premature optimization。尽量避免修复你还没有的问题。

我建议让数据库完成工作。

答案 1 :(得分:1)

将数千条记录返回到中间层,对它们进行操作,并将结果推回数据库对我来说毫无意义。为什么所有的网络来回?

如果您真正处理了许多记录,我建议考虑让数据库完成工作。没有那种网络流量。

如果不可能,您应确保确实需要所有这些记录。我打赌你只会认为你这样做。

以这种方式编写查询对我来说似乎是另一个坏主意。