2012-06-21 80 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中执行筛选效率更高。