mysql存储过程 每个设备只保留10条最新数据

CREATE DEFINER=`root`@`%` PROCEDURE `clear_data`()
BEGIN

declare cachtime TIMESTAMP;
DECLARE camid VARCHAR(100) DEFAULT '';
DECLARE count INTEGER DEFAULT 1;

declare i int;
set i = 1;
while i <= 391 do
set @table = CONCAT('analysis_events_',i);
set @sql = CONCAT("SELECT cameraid , count(`cameraid`) AS`count` INTO @out_camid, @out_count FROM ", @table ,"  GROUP BY cameraid  ORDER BY count DESC LIMIT 1 ;");
PREPARE stmt FROM @sql;

EXECUTE stmt;
DEALLOCATE PREPARE stmt;

#@count_num 必须加@,
#set count = @out_count; 赋值给输出变量 
set count = @out_count;
set camid = @out_camid;
IF(count >10) THEN    

#测试
#SELECT count; 
#SELECT camid; 
CALL find_time(@table, camid, cachtime);

#测试
#SE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 中删除百万数据中的重复项并保留的效率取决于多个因素。以下是一些可能影响效率的因素: 1. 索引的使用:如果表中存在合适的索引,删除重复项的效率会更高。可以使用唯一索引或主键索引来确保数据的唯一性。 2. 数据库服务器的硬件性能:较高配置的服务器通常可以更快地处理大量数据操作。 3. 语句的优化:使用正确的 SQL 语句,如使用 WHERE 子句和 LIMIT 子句,可以减少查询的范围,提高效率。 4. 表的结构:表的大小和复杂性会影响删除操作的效率。如果表中存在许多其他索引或触发器,可能会严重影响性能。 5. 事务处理:在删除大量数据时,使用事务可以提高效率。通过合理地使用事务并批量处理数据,可以减少数据库锁定和日志写入的次数,从而提高删除操作的效率。 然而,在百万级别的数据量中删除重复项可能是一个耗时的操作,因为需要扫描整个表并对每个重复项进行删除。对于大型数据集,可能需要更多的时间来完成操作。为了提高效率,可以考虑以下方法: 1. 创建一个临时表:将原始表中的数据复制到一个新的临时表中,并设置适当的索引。然后,通过使用 GROUP BY 子句和聚合函数,选择要保留的唯一记录。最后,将临时表的数据插入到原始表中,完成删除重复项的操作。 2. 使用临时存储过程:创建一个临时存储过程,通过使用游标和循环来逐行处理数据。在处理每一行时,检查是否有重复项,并删除多余的记录。 在实际应用中,根据具体需求和数据量的大小,可以进行适当的优化和测试,以找到最有效的方法来删除重复项并保留
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值