linq遍历求思路啊
有一个表,每隔一个礼拜要向表中注入约百万行记录,然后对新注入的记录逐一进行处理。我只能对这一个表进行操作,所以不可能中间弄个暂存的表。
我想了一下应该是给表中做个字段,来判别是否处理过。可是当时间久了,表中的记录有几千万行甚至更多,当查询(判断)的时候,还得对全表进行扫描,时间肯定会很久。
里面有个datetime,记录基本上是按时间顺序做的,能不能当我查询到那个时间的时候我就停止查询?
或者每次处理的时候我只选择表里的最后N百万行,因为每次注入数据量大概是知道的,取到后再判断是否处理过,这样需要两次判断,数据量大的时候还是有一定优势的。但是不知道取数据的时候是怎么取的,是从头开始还是从尾开始,还有就是怎么取得定量的记录
谢谢!
------解决方案--------------------数据库添加索引
利用LINQ 延迟查询
var query=from t in table
where t.time>DateTime.Parse("2011-06-01") && t.time <DateTime.Now
order by t.time descending
select t;
------解决方案--------------------这种情况应该对数据库本身的结构调优。
比如分库。
------解决方案--------------------
给日期添加索引,按日期来查询,最好分页查询应该要好点吧
var query=(from t in table
where t.time>DateTime.Parse("2011-06-01") && t.time <DateTime.Now
order by t.time descending
select t).take(100);