数据库数据量太大

遇到一个客户一天可能做1000多个包,时间一久,我看数据有80多万行。我急救了一下,trucate了表。

如今做的策略1:我们要把那张表a的数据(符合条件的数据才转(完工))转移到一个临时表里面去,然后创建一个永久的历史表,根据临时表的数据id将 数据量大且是被操作的那张表a 的数据插入到历史表去,然后根据临时表的id删除表a(实现减少了表a的数据,也保留了需要的数据)。

在mysql里面做一个存储过程,然后做一个事务,在做一个定时器。存储过程是完成上面的策略,然后把这个存储过程通过事件来调用,定时器设置每天检查,每天启动那个事务,把符合条件的数据转移。

策略2:我们是查的是包id,我们可以在那张表里将那一列设置一个索引。

ALTER TABLE your_table_name ADD INDEX index_name (pack_id);

 索引可以快速定位到该行数据,如果没有索引,则进行的是全表扫描。

索引的好处与代价

好处:
提高查询速度:索引可以极大地加快数据检索速度,特别是对于大型表。

优化排序:索引可以帮助MySQL快速排序数据,尤其是在ORDER BY子句中。

加快分组操作:在GROUP BY和JOIN操作中,索引可以提高性能。

使用条件过滤:索引可以快速定位到满足特定条件的数据行。

减少数据访问:索引可以减少数据库需要扫描的数据量。

提高缓存效率:索引可以提高数据缓存的效率,因为索引本身可以被缓存。

代价:
存储成本:索引需要额外的存储空间。

写操作成本:对表进行INSERT、UPDATE和DELETE操作时,索引需要同步更新,这可能会降低写操作的性能。

维护成本:索引需要维护,尤其是在数据变更时。

创建和重建索引的时间:创建索引或在大量数据变更后重建索引可能需要时间。

索引选择性:如果索引列包含大量重复值(低选择性),索引的效果可能不佳。

复杂的查询可能需要多个索引:对于复杂的查询,可能需要多个索引来优化性能,这增加了维护的复杂性。

索引碎片:随着数据的变更,索引可能会产生碎片,需要定期优化。

 维护索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值