【发布时间】:2015-02-27 07:43:47
【问题描述】:
我目前正在处理大数据。我正在将数据导入到一个表中,每次导入大约有 2 亿条记录。我想查看当前导入加载了多少记录。但目前我的脚本首先运行了 10 亿条记录,以最终计算最后导入的数据。
SELECT Datum, COUNT(Datum) AS recCount
FROM PF161DailyAggregates
GROUP BY Datum
这是我当前的代码,它显示每个日期的行数 我可以使代码仅显示当前的导入作业,但仍会遍历所有其他记录。
目前此查询大约需要一个小时。我怎样才能快速只计算最后 N 行?
提前致谢
【问题讨论】:
-
自动标签,现已移除
-
select top n ... from ... order by .. desc怎么样 -
那不是大数据,是大表的 SQL 问题。首先,确保
Datum已编入索引。假设导入仅添加较晚的日期,请在导入前选择最大日期,然后使用它来过滤带有WHERE的表。考虑压缩、分区和/或列存储索引以提高速度,它们可以显着提高性能。 -
一般来说,SQL 中的一些“最后”数据是不容易得到的。尝试更改您的条件或排序以查询“第一个”数据。然后你可以有效地限制结果。
-
你为什么不直接
SELECT COUNT(*) FROM table WHERE Datum>=@previousMaxDatum?
标签: sql sql-server sql-server-2012