java - 从 SQL 重新查询或在 ArrayList 中循环并在 Java 中过滤数据是否更快?

标签 java mysql sql jdbc

我有一个从 SQL 查询中填充的 ArrayList,它包含一个表的所有行。

如果我想要这个 ArrayList 的一个子集(比如 WHERE column1 = x)
是重新建立 SQL 连接并获取具有此条件的查询更快,还是循环遍历 arraylist 并过滤数据? (考虑 1000 行的数组列表)

如果通过 arraylist 的循环更快,直到它仍然适用的大小是多少?

谢谢

最佳答案

在 Java 中执行此操作应该总是更快。内存数组的 Java 过滤与 SQL 一样快,甚至更快。而且您还必须考虑连接到数据库、发送命令和解码答案的开销。

对于真正复杂的查询,通过 SQL 完成这件事可能更简单,并且它可能在数据库大小方面更好地扩展(想想一百万行:你打算将它们全部保存在内存中吗? ).此外,SQL 查询优化器可能有更多关于列基数的信息,并且能够更有效地执行,因此总体上比你的仅仅更快的逐个检查更快基础Java代码。

另一方面,还要考虑代码的可维护性。有些事情最好留给 SQL,即使那样会慢一点。

关于java - 从 SQL 重新查询或在 ArrayList 中循环并在 Java 中过滤数据是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661473/

相关文章:

java - 这个 contains(T Entry) 方法有什么问题? java 。链表

java - AppStateManager 无法解析 - Cloud Save

java - 解码 PKCS-7 请求

java - 在 Ubuntu 上安装 Java 8

MySQL - 如何使用 select 语句插入多行?

sql - 如何防止 PostgreSQL 中的精度溢出?

mysql - 如何使用mysql在同一存储过程中使用插入和更新查询?

mysql - MySQL 可以处理多少个 GET_LOCK?

sql - 计算一个表中的商并将其存储在另一个表中

c# - 来自存储过程的模式