位置: 编程技术 - 正文
推荐整理分享删除MySQL重复数据的方法(删除mysql重复数据),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql删除重复项,mysql删除重复项,mysql如何删除重复的数据,mysql删除重复项,mysql数据库删除重复记录,mysql删除重复项,mysql数据库删除重复记录,删除mysql重复数据,内容如对您有帮助,希望把文章链接给更多的朋友!
本文实例讲述了删除MySQL重复数据的方法。分享给大家供大家参考。具体方法如下:
项目背景
在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据。因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然而,数据库中存入了多个数据。对于如何造成了这个结果,一时没有想清楚,但为了解决入库慢的问题,首先要删除冗余数据。
问题描述
数据库的表结构很简单,如下:查询所有数据量输出
查询所有时间点不同设备的数据量输出
由上面的数据可以看出,数据冗余了倍左右。
再按时间分组看一下:输出:由上图可见,同一个时间点的同一个设备的数据有冗余,现在我们要把这些冗余数据去掉。
解决方法
思路是这样的:首先应该按照conf_id和时间点来判断,进行分组(group by)查询,每组中再取一个就可以。分组是很简单,但是分组怎么取一个呢?我采用了中间表的形式。
创建中间表,并把数据导入中间表在中间表中增加一个字段,此字段是自增长的。删除无用数据
先查询一下删除不对的数据慢着,输出错误:
You can't specify target table 'perf_linux_t' for update in FROM clause
不能删除啊,那只能再建一个中间表了。
再建中间表转变思路,不删除不符合的数据,而是把符合的数据存到这张新表中。把这张表中的无用列删除导回数据
删除原来的数据插入数据删除中间表总结
通过这个方法,数据变为了条,删除了冗余的数据。但实际上程序的问题并没有完全定位,还需要观察才能定位问题。
希望本文所述对大家的mysql数据库程序设计有所帮助。
MySql查询时间段的方法 本文实例讲述了MySql查询时间段的方法。分享给大家供大家参考。具体方法如下:MySql查询时间段的方法未必人人都会,下面为您介绍两种MySql查询时间
MySQL使用临时表加速查询的方法 本文实例讲述了MySQL使用临时表加速查询的方法。分享给大家供大家参考。具体分析如下:使用MySQL临时表,有时是可以加速查询的,下面就为您详细介
MySQL重定位数据目录的方法 本文实例讲述了MySQL重定位数据目录的实现方法。分享给大家供大家参考。具体方法如下:MySQL允许重定位数据目录或其中的成员,这里就来介绍重定位M
标签: 删除mysql重复数据
本文链接地址:https://www.jiuchutong.com/biancheng/321393.html 转载请保留说明!上一篇:Mysql优化调优中两个重要参数table_cache和key_buffer(mysql数据库优化及sql调优)
友情链接: 武汉网站建设