我有这种情况:SQL Server数据库中的一个表已经有5000万行。我们不时地批量插入行。每个批次具有相同的批次ID和行的日期时间戳,批次一次最多可以有100k行。
一天中有很多批次。使用batchID
和datetimestamp
查询获取第一批行的最佳方法是什么?
我们一直在使用批处理ID的min并使用相应的datetimestamp一段时间,但它似乎没有高效运行。你能否提出一些见解,可以做些什么让这更好?感谢您的回复。
答案 0 :(得分:0)
您应该为EDate
- 列添加索引,包括BatchID
。
create nonclustered index Index_EDate_Table
on YourTable
(EDate ASC)
include
(BatchID)
然后,您可以查询按时间戳排序的当天批次
select distinct BatchID
from YourTable
where EDate >= Cast(GetDate() as Date)
order by EDate
这应该足够快。