数据库中需要删除百万条目数据的若干处理方式

1.像mysql这个关系型数据库在数据量达到千万级别之后,删除数据尤其之慢,更甚者生成环境是基本不允许这样低效率的操作出现,为此需要另种优化删除方式–来经过该进,使用inner join 的方式删除起来,效率成倍的提升!例如通过以下语句的调整更改提高删除效率:

DELETE FROM t_orders_detail a,(SELECT * FROM t_pro_record c WHERE c.state=3) b WHERE a.pro_record_id=b.prId;

2.每次删除记录,数据库都要相应地更新索引,这是很慢的IO操作,而且后面索引下的碎片越来越多,就更慢,这就是为什么一开始只花1.5小时,后面要3小时才能删除400万条记录,呈递增式的缓慢操作效果

A.删除之前,做个完整备份,一般而言是没有目标表的则select into from来塑造,有目标表则通过insert into select  * from;
B.删除前先保存当前索引的DDL,然后删除其索引;
C.然后根据使用的删除条件建立一个临时的索引,以此建立提高删除效率的索引,打造围绕一个字段的聚集型索引,以此为基地大大提升删除效率;
D.开始执行删除操作,过程会大大削减,时间得到节省,效率显而易见,完成之后再重建之前的索引。

3.若是低于千万级别的数据同时所删数据也较少几万条以内的话,可以把要保留的数据备份出来。在drop表。重新创建,先不要急着创建索引、主键,把数据导回去,然后在建索引、约束之类的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要确定数据库存储的是什么类型的数据和如何存储时间信息。假设你有一个名为"items"的表,其包含一个名为"expiration_date"的列,存储了每个条目的过期日期。 接下来,你可以使用Java的JDBC API连接到数据库,并编写一个查询语句来检索今天过期的条目。以下是一个示例代码: ```java import java.sql.*; import java.time.LocalDate; public class ExpirationChecker { public static void main(String[] args) { try { // 连接到数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 获取今天的日期 LocalDate today = LocalDate.now(); // 创建查询语句 String query = "SELECT * FROM items WHERE expiration_date = ?"; // 创建PreparedStatement对象并设置参数 PreparedStatement ps = conn.prepareStatement(query); ps.setDate(1, java.sql.Date.valueOf(today)); // 执行查询并获取结果 ResultSet rs = ps.executeQuery(); // 遍历结果并输出每个过期的条目 while (rs.next()) { System.out.println("Item " + rs.getInt("id") + " has expired."); } // 关闭连接和其他资源 rs.close(); ps.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在这个示例代码,我们首先连接到数据库,然后获取今天的日期。接下来,我们创建一个查询语句,其我们使用"?"占位符来代表今天的日期。然后,我们创建一个PreparedStatement对象并设置它的参数,这样它就可以执行查询了。最后,我们遍历结果集并输出每个过期的条目。 请注意,这个示例代码假设数据库连接已经正确设置,并且日期格式与Java的LocalDate类兼容。如果你的数据库使用不同的日期格式,你需要相应地更改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值