【问题标题】: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 秒的时间内完成所有事情......
我的建议是先尝试将逻辑放入查询中,如果结果不满意,请在代码中尝试,看看什么是最好的。
祝你好运!
[]的
贝尔坦