【问题标题】:Query large table and do logic in code OR do a lot of queries.. Which one is more efficient?查询大表并在代码中执行逻辑或执行大量查询。哪个更有效?
【发布时间】:2012-09-11 11:11:36
【问题描述】:

我有一个非常大的表,有 ~90000 行,每行包含 10 列。我需要从数据库中获取一些数据。在最坏的情况下,我需要查询 7500 行,但通常在 ~4000 左右行..

每一行都有一个名为“LineNumber”的列,每~10行都有相同的LineNumber,从1开始...
对于具有相同 LineNumber 的所有行,我需要从名为 RATING 的列中获取最低和最高数字。

我可以得到所有大约 4000 行,然后传递这些行中的每一行并执行一些逻辑来获得最高或最低..
或者我可以查询我感兴趣的每个 LineNumber,并让查询让我得到最高和最低的,这会更容易..

这两种方式哪一种更有效?

【问题讨论】:

    标签: android performance sqlite


    【解决方案1】:

    我愿意接受质疑。乍一看,查询看起来很简单:

    SELECT LineNumber MIN(RATING) MAX(RATING) FROM <YOUR_TABLE> WHERE... GROUP BY LineNumber
    

    这应该正是你想要的(如果我理解正确的话)

    【讨论】:

      【解决方案2】:

      我遇到了像你一样的问题,但在我的情况下是日期,得到“之后”和“之前”......

      我在代码中做了,我查询了我需要的所有数据,然后我比较了日期,在大约 40k 行中,时间接近 20 秒...

      所以我尝试将逻辑放入 SQL 中,当我得到查询时,我进行比较,令我惊讶的是,现在查询,我需要在不到 2 秒的时间内完成所有事情......

      我的建议是先尝试将逻辑放入查询中,如果结果不满意,请在代码中尝试,看看什么是最好的。

      祝你好运!

      []的 贝尔坦

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 2011-01-09
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多