在过滤类中,我决定了;出于功能目的首先从表中获取所有数据,然后使用类本身过滤此结果。我有一个表示表中所有数据的对象列表;我想知道过滤这个结果的最快或者更有效的方法是将它们添加到jTable中。高效的对象搜索/过滤
我正在寻找它来模仿SQL中的“Like”指令,使用Java编程。
在过滤类中,我决定了;出于功能目的首先从表中获取所有数据,然后使用类本身过滤此结果。我有一个表示表中所有数据的对象列表;我想知道过滤这个结果的最快或者更有效的方法是将它们添加到jTable中。高效的对象搜索/过滤
我正在寻找它来模仿SQL中的“Like”指令,使用Java编程。
SQL的过滤速度总是比JAVA快。
收集您需要的数据,不多也不少。
DBMS可以具有使过滤和排序更快的索引。而主要的数据库管理系统肯定有成熟和彻底发展的算法。所以在SQL中进行过滤和排序要高效得多。另一方面,如果您打算缩小搜索结果范围,则通过Java集合API对数据库和后续数据进行第一次迭代(或多次迭代)似乎是合理的。但是,如果您的基本结果集(通过SQL提取)仍然相关,则应该以某种方式进行跟踪。
无论如何,通过互联网从数据库获取100 000条记录只是为了选择50条记录听起来不太好。
谢谢你的回答,但要做一个查询,每次texfield改变它的效率都不高。我试图以最快/最有效的方式做到这一点。 – ctejada
我已经更新了我的答案。这是一个折衷。如果在SQL运行之后有50个结果 - 在没有SQL开销的情况下在java中进行进一步过滤是高效的。也许你应该考虑文本框输入长度。 –
@ctejada但是,这种方法只适用于缩小标准,所以如果你应该做另一个SQL查询来获得实际的基本结果集,你必须以某种方式进行跟踪。 –
若要模仿LIKE
您将不得不遍历所有对象,然后再遍历字段,您必须使用类似String.match的字段来查看字段是否与过滤匹配标准。
正如Robin所说,在SQL中执行此操作比将数据库中的所有内容导入Java并在Java中执行筛选效率更高。
这个问题被标记为Java,而不是PHP,但我想你的逻辑仍然成立。 – matts
哎呦,谢谢。 – Sherlock
是的,但是当你每次texfield变化时都尝试做一次querry时,它会有点慢......这将需要永远得到一些结果。 – ctejada