1

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

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

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

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

4

2 回答 2

1

我会接受询问。乍一看,查询看起来很简单:

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

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

于 2012-09-11T11:16:17.290 回答
1

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

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

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

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

祝你好运!

[]的伯坦

于 2012-09-11T11:19:51.440 回答