Java Stream 过滤器是否比条件 DB MySQL 查询更快?

Ris*_*ran 2 java mysql java-stream

如果我想从表中获取数据并稍后对其进行过滤,是否比运行有条件的 MySQL 查询更好?

例子 -

  1. list.stream.filter(x-> x.getSalary() > baseSalary).collect(Collectors.toList());

  2. select * from employees where salary > 10000; , 通过 JPA 运行此查询。

哪个更快?我们应该依赖数据库引擎来获得更快的结果还是在我们的代码中处理它会更好。以上只是一个例子,请不要认为这是实时的。

Mic*_*man 5

不,在 Java 中过滤 DB 查询的结果从来都不是一个好主意。首先,您未过滤的选择可能会带来未知数量的记录,其中大部分记录一开始就不需要。您不仅会浪费网络负载,还会浪费您的 java 进程的内存,以及首先将信息带过来然后遍历比需要的长得多的列表并对其进行过滤的时间。DB 是为“繁重”数据而设计的,您应该使用它。此外,还有一个通用的经验法则:对数据执行尽可能接近数据的逻辑操作。即在您的情况下,在将数据发送到下一个“站”之前,在数据库中获取和过滤您的数据 - 您的 Java 服务器端