Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Java sql查询性能:查找最大值_Java_Sql_Performance - Fatal编程技术网

Java sql查询性能:查找最大值

Java sql查询性能:查找最大值,java,sql,performance,Java,Sql,Performance,我有一个包含组和权限列的表。我想从组列表中查找最大权限。在使用java和oracle数据库时,我想到了两种方法: 方式1: in java loop through the group list result = select permission from table where group = currentgroup if result > max, max = result 方式2: max = select max(permission) from table

我有一个包含组和权限列的表。我想从组列表中查找最大权限。在使用java和oracle数据库时,我想到了两种方法:

方式1:

in java loop through the group list
    result = select permission from table where group = currentgroup
    if result > max, max = result 
方式2:

max = select max(permission) from table where group in (group list)

我原以为方法2会更快,但组列表可能会很长,我不知道在单个sql查询中使用长列表是否是个好主意

从您提供的信息来看,第二种方法是目前为止最好的。数据库直接针对这类任务进行了优化,因此在合理的情况下,最好使用数据库缩小数据范围。第一种方法意味着数据库无论如何都需要返回所有值,这会增加处理时间、带宽并耗尽java应用程序中的内存。

我不明白,为什么列表长度会影响
MAX()
的结果,除非您的查询有缺陷?从哪里获得此组列表?我想它来自你的数据库。在组表上使用内部联接。然后,您可以在数据库上完成所有工作,而不必在查询中提供整个组列表。也许常数也有限制。无论如何,我认为bind变量的限制至少是1000。如果有的话,常量限制应该更高。@help:you
group list
是一个变量吗?如果是这样,请将其改写为
group\u list
(或其他任何内容),以免与
group
关键字混淆。