欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

大数据量选择和删除有关问题

更新时间: 2014-01-05 02:20:27 责任编辑: Author_N1

 

大数据量选择和删除问题?
比如对于一张表,数据量可以达到数百万,表中有datetime类型的时间字段。当数据量超过阈值(假设阈值是500万),现在实际达到550万,希望能按datetime字段将最早时间的50万记录删除。

该用什么方法好?如果单存的按datetime字段排序,再删除前面的50万记录,排序的过程会相当耗时。有什么好的办法可以解决这个问题?

--参考方法--
是否支持TOP?在datetime字段上建立索引
--参考方法--
如何精确来算肯定不会太快。或许可以直接把要求改为 删除XXXX日期之前的。比如你表中550万数据是两年的,则删除 50/550*(365*2)=65天。 删除前 65天则会比较快。但显然不精确。特别是每天,每月记录数无规律的情况下则无法用这种近似法。
--参考方法--
50万条记录要删除,锁够不够?删除记录的时候停应用吗?数据库有日志的吧,不停应用的话碰上锁不够再回滚,时间就没底了。INFORMIX的长处不在批处理的。不知道你的INFORMIX是什么版本的,不过根据我的经验,不要想删除了,将数据需要保存的数据UNLOAD出来,将表删除重建,再将数据UNLOAD进去,速度绝对比你做DELETE快。
--参考方法--
我觉得按2楼的方式,比如按时间删除会比较方便,因为一般的数据保存都是有时间限制的,比如保留最近1个月,或6个月,或1年之类的数据。

这样本身表也可以按时间分片,删除就会更加容易。
--参考方法--
1、上面很多写法完全是:ms-sql的语法写法,根本不是informix的语法写法。

2、通常的大数据量的操作。因为我们是零售行业的企业,所以销售流水的数量可想而知了!通常的做法是unload和load。unload后,重新建表,然后load进去!
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:20:27
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8667/
本文WWW.DOC100.NET DOC100.NET版权所有。