比如说一个张中有100万条数据,其中有时间字段,(1)查找最近的1000条记录;
(2)删除某个时间段的记录.以上SQL该如何编写???
因为数据量比较大,所以考虑到性能上的问题,有什么好的办法吗?我现在想到的是:
创建时间字段的索引,然后按时间排序,再进行查找删除
实在想不出来了,请大家帮忙!有切实可行的好办法一定加分!!!
(2)删除某个时间段的记录.以上SQL该如何编写???
因为数据量比较大,所以考虑到性能上的问题,有什么好的办法吗?我现在想到的是:
创建时间字段的索引,然后按时间排序,再进行查找删除
实在想不出来了,请大家帮忙!有切实可行的好办法一定加分!!!
可以先用select count(*)测试一下sql效率
印像中用like时不会使用这个字段的索引,是不是真的?
因此在时间字段上做索引非常有效(1)查找最近的1000条记录;
按时间倒排序后取前1000,数据库都有相应的分页支持
(2)删除某个时间段的记录.
不要一条一条删除,而应该一次后者分次删除。
一次删除的意思是在WHERE子句中用 time>起始 and time<截至
分次删除的意思是如果一次删除的记录过多,也非常慢,可能影响到数据库运行,那么分次删除,把起始到截至的时间段切成数个小段,然后分次WHERE