我有一个从 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/