【问题标题】:Efficient Object Search/Filtering高效的对象搜索/过滤
【发布时间】:2012-06-24 02:53:47
【问题描述】:

在过滤类中,我决定了;出于功能目的,首先从表中获取所有数据,然后使用类本身过滤此结果。我有一个代表表中所有数据的对象列表;我想知道过滤这些结果以将它们添加到 jTable 中的最快或更有效的方法是什么。

我正在寻找它来模仿 SQL 中的“Like”指令,并使用 Java 编程。

【问题讨论】:

    标签: java list search object filtering


    【解决方案1】:

    DBMS 可以使用索引来加快过滤和排序。主要的 DBMS 肯定拥有成熟和彻底开发的算法。因此在 SQL 中进行过滤和排序效率更高。

    另一方面,如果您打算缩小搜索结果的范围,那么通过 Java 集合 API 对 DB 和后续的进行第一次迭代(或多次迭代)似乎是合理的。但是您应该以某种方式跟踪您的基本结果集(通过 SQL 获取)是否仍然相关。

    无论如何,通过 Internet 从 DB 获取 100 000 条记录只是为了选择其中的 50 条听起来并不好。

    【讨论】:

    • 感谢您的回答,但是每次 texfield 更改时都进行查询根本没有效率。我正在尝试以最快/最有效的方式做到这一点。
    • 我已经更新了我的答案。这是一个权衡。如果 SQL 运行后有 50 个结果 - 在没有 SQL 开销的情况下在 java 中进行进一步过滤是有效的。也许您应该考虑文本框输入长度。
    • @ctejada 但是这种方法仅适用于缩小标准,因此您必须以某种方式跟踪是否应该执行另一个 SQL 查询以获取实际的基本结果集。
    • 听起来不错。你有什么想法应该如何在 Java 中以最快的方式做到这一点?
    【解决方案2】:

    SQL 在过滤方面总是比 JAVA 快。

    收集您需要的数据,不多也不少。

    【讨论】:

    • 这个问题被标记为 Java,而不是 PHP,尽管我想你的逻辑仍然成立。
    • 是的,但是每次 texfield 更改时都尝试进行查询时会有点慢......获得一些结果需要很长时间。
    • 在 JAVA 中搜索不会使其更快,因为您必须将整个数据集 somewhere 存储在代码中,并在每次文本字段更改时对该数据集运行搜索.这里真正的问题是什么?你想做什么?
    • 我正在尝试对我的数据库表进行过滤,以在 jTable 中显示它。我正在寻找最快的方法来做到这一点;最初我认为在 java 中执行此操作会比每次在 Internet 上执行查询要快;但显然我错了
    【解决方案3】:

    要模仿LIKE,您将必须遍历所有对象,然后在您所在的字段上,您必须使用String.match 之类的东西来查看字段是否符合过滤条件。

    正如 Robin 所说,在 SQL 中执行此操作比将所有内容从数据库中提取到 Java 中并在 Java 中进行过滤更有效。

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 2021-12-16
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 2015-04-13
      • 2018-01-16
      • 2023-03-26
      • 2021-12-09
      相关资源
      最近更新 更多