最好使用for over a list或多次访问数据库



我对经常使用的方法的更好实现感到怀疑。生产中的解决方案如下所示:

public List<Element> method(String text) {  
List<Element> element = select * from element e where e.text like text
return element
}

新的实现方式改为加载完整列表1次

List<Element> allElement =select * from element

这种方法变得有点像

public List<Element> method(String text) {  
List<Element> element; 
for Element e : allElement{
if e.text.contains(text) element.add(e)
}
return element
}

哪一个是更好的解决方案?

第一种方法看起来更好,因为您正在利用DB功能来过滤结果(为了完成这项任务,对其进行了更优化(。第二种方法显著增加了获取所有元素所需的往返时间(取决于元素的数量(,并在循环整个列表时增加了时间复杂性,而且它可能会在应用程序上消耗更多内存

一次性获取所有数据要好得多。这是因为您不需要在每次往返于数据库的TCP/IP数据包上浪费时间。

同时,请注意,如果您尝试一次性加载的结果集太大,则可能会出现OutOfMemory错误。

简而言之:

  • 一次性获取数据更好
  • 确保JVM上有足够的RAM来容纳(潜在的(大数据集

最新更新