我對經常使用的方法的更好實作有疑問。生產中的解決方案如下形式:
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
}
哪個是更好的解決方案?
uj5u.com熱心網友回復:
第一種方法看起來更好,因為您正在利用資料庫功能來過濾結果(為完成該任務而進行了更優化)。第二種方法顯著增加了獲取所有元素所需的往返時間(取決于元素的數量),并在回圈遍歷整個串列時增加了時間復雜度,并且它可能會在您的應用程式上消耗更多記憶體
uj5u.com熱心網友回復:
一次性獲取所有資料要好得多。這是因為您不需要每次都在 TCP/IP 資料包往返資料庫上浪費時間。
同時,請注意,如果您嘗試一次性加載的結果集太大,您可能會OutOfMemory出錯。
簡而言之:
- 一次性獲取資料更好
- 確保 JVM 上有足夠的 RAM 來容納(潛在的)大型資料集。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/347837.html
上一篇:計算字串中的所有元音
