Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ArrayList中的SQL或循环重新查询并用Java过滤数据是否更快?_Java_Mysql_Sql_Jdbc - Fatal编程技术网

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

从ArrayList中的SQL或循环重新查询并用Java过滤数据是否更快?,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我有一个ArrayList,它由SQL查询填充,包含表中的所有行 如果我想要这个ArrayList的子集(比如column1=x) 重新创建SQL连接并获取具有此条件的查询,或者循环遍历arraylist并过滤数据,速度更快吗?(考虑1000行的阵列列表) 如果通过arraylist的循环速度更快,那么它仍然可以应用到什么大小 谢谢如果您的内存中已经有了所有内容,我猜筛选列表将比对数据库进行进程间调用更快,尤其是对于如此少量的行 但一开始记忆中就有完整的清单似乎很奇怪。数据库速度很快,可以在需要

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

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

如果通过arraylist的循环速度更快,那么它仍然可以应用到什么大小


谢谢

如果您的内存中已经有了所有内容,我猜筛选列表将比对数据库进行进程间调用更快,尤其是对于如此少量的行


但一开始记忆中就有完整的清单似乎很奇怪。数据库速度很快,可以在需要时返回所需数据。在内存中缓存这些小表的内容可能会使您的应用程序更加复杂,而不会显著提高速度。我会尽量让应用程序保持无状态,除非您有性能问题,并且证明缓存表内容可以解决问题。

在Java中这样做应该更快。内存数组的Java过滤与SQL一样快,甚至更快。你还必须考虑连接到数据库、发送命令和解码答案的开销。

对于非常复杂的查询,使用SQL完成这项工作可能会更简单,而且根据数据库大小,它的扩展性可能更好(想想一百万行:是否要将它们全部保留在内存中?)。此外,SQL查询优化器可能有更多关于列基数的信息,并且能够比您的基于逐个检查的Java代码执行得更高效,因此总体上更快


另一方面,也考虑代码的可维护性。有些事情最好留给SQL处理,即使这样做稍微慢一点。

这取决于您的环境配置。为什么不尝试一些简单的性能测试?还考虑将所有这些行从数据库转移到java应用程序的开销,存储所有这些行所需的内存,最终丢弃大部分的那些。我不确定我是否同意它在Java中会更快。@MarkrotVeel,通常不会,但OP询问过滤已经存在的查询数组或重复查询是否会更快。如果数据已经是Java端的(我同意你的看法,也许可以在那里做些事情),那么重用它会更快。