我有一个返回数千条记录的查询(在某些时候它会返回)。在那个查询中,我有一些像这样的
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?为什么?我试过测试它,但目前没有那么多的数据。
答案 0 :(得分:2)
通常,让数据库尽可能多地为您完成工作会更好(因为性能和复杂性)。在应用程序中完成工作可能会产生超出必要的网络流量(这会降低性能),并且代码必须包含其中所有令人讨厌的逻辑,否则会增加复杂性。
还记得avoid premature optimization。尽量避免修复你还没有的问题。
我建议让数据库完成工作。
答案 1 :(得分:1)
将数千条记录返回到中间层,对它们进行操作,并将结果推回数据库对我来说毫无意义。为什么所有的网络来回?
如果您真正处理了许多记录,我建议考虑让数据库完成工作。没有那种网络流量。
如果不可能,您应确保确实需要所有这些记录。我打赌你只会认为你这样做。
以这种方式编写查询对我来说似乎是另一个坏主意。