2013-07-17 22 views
1

如果我從我的java應用程序創建一個oracle查詢並且該oracle查詢返回一個大的列表,那麼更有效的排序是:使用oracle order by子句還是排序java使用Collections.sort(列表)? 我直覺地理解,這樣做在oracle是更快,但找不到原因由於性能原因應該在java或oracle中進行排序

+2

SQL數據庫中的索引在輸入時被排序。這意味着您在插入時會產生訂購/索引成本。之後,如果列索引,索引是_already ordered_ –

回答

0

退房這個答案這樣一個問題:database sort vs. programmatic java sort

基本上,如果你有幾行數據(10-100),從代碼中排序它會更快,否則使用數據庫,他們正在爲這種東西設計

0

如果該列是索引,那麼我相信ORDER BY在數據庫中的處理將比在Java中排序結果集更快。數據庫旨在處理大量數據,並擁有各種優化技術。再次取決於實際的查詢字符串,數據庫優化器可能會選擇一個查詢計劃,它可以按順序返回數據,而無需執行排序。那麼,如果體積大,我會離開工作,DB不是加載在內存中的整個結果,並在Java中排序它,獨自離開CPU使用率等等

+3

即使沒有索引Oracle,與任何其他嚴重的DBMS一樣,排序可能會比Java快得多。如您所說,數據庫旨在有效處理大量數據。數據庫中的排序算法非常受關注,因此它們往往非常有效。數據庫服務器通常比客戶端擁有更多的內存。如果多個連接請求相同的結果集,則排序後的結果可能會被共享,而在客戶端,每個會話都必須對其自己的結果進行排序。這些是你不應該在客戶端排序的一些原因。 – mustaccio

相關問題