2012-06-21 79 views
1

在過濾類中,我決定了;出於功能目的首先從表中獲取所有數據,然後使用類本身過濾此結果。我有一個表示表中所有數據的對象列表;我想知道過濾這個結果的最快或者更有效的方法是將它們添加到jTable中。高效的對象搜索/過濾

我正在尋找它來模仿SQL中的「Like」指令,使用Java編程。

回答

1

SQL的過濾速度總是比JAVA快。

收集您需要的數據,不多也不少。

+2

這個問題被標記爲Java,而不是PHP,但我想你的邏輯仍然成立。 – matts

+0

哎呦,謝謝。 – Sherlock

+0

是的,但是當你每次texfield變化時都嘗試做一次querry時,它會有點慢......這將需要永遠得到一些結果。 – ctejada

2

DBMS可以具有使過濾和排序更快的索引。而主要的數據庫管理系統肯定有成熟和徹底發展的算法。所以在SQL中進行過濾和排序要高效得多。另一方面,如果您打算縮小搜索結果範圍,則通過Java集合API對數據庫和後續數據進行第一次迭代(或多次迭代)似乎是合理的。但是,如果您的基本結果集(通過SQL提取)仍然相關,則應該以某種方式進行跟蹤。

無論如何,通過互聯網從數據庫獲取100 000條記錄只是爲了選擇50條記錄聽起來不太好。

+0

謝謝你的回答,但要做一個查詢,每次texfield改變它的效率都不高。我試圖以最快/最有效的方式做到這一點。 – ctejada

+0

我已經更新了我的答案。這是一個折衷。如果在SQL運行之後有50個結果 - 在沒有SQL開銷的情況下在java中進行進一步過濾是高效的。也許你應該考慮文本框輸入長度。 –

+0

@ctejada但是,這種方法只適用於縮小標準,所以如果你應該做另一個SQL查詢來獲得實際的基本結果集,你必須以某種方式進行跟蹤。 –

1

若要模仿LIKE您將不得不遍歷所有對象,然後再遍歷字段,您必須使用類似String.match的字段來查看字段是否與過濾匹配標準。

正如Robin所說,在SQL中執行此操作比將數據庫中的所有內容導入Java並在Java中執行篩選效率更高。