我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中怎么合并表

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中怎么合并表

这期内容当中小编将会给大家带来有关mysql中怎么合并表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


 
mysql合并表去重
目标:
现有表a和b,把两个表中的数据合并去重到c表中。其中a和b表中数据量大概在2千万左右。
基本情况
操作系统版本:CentOS release 5.6 64位
操作系统内存:8G
版本:5.1.56-community 64位
数据库初始化参数:默认
 
数据库表和数据量
表a:  www.2cto.com  
> desc a2kw;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1    | varchar(20) | YES  | MUL | NULL    |       |
| c2    | varchar(30) | YES  |     | NULL    |       |
| c3    | varchar(12) | YES  |     | NULL    |       |
| c4    | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
表b
mysql> desc b2kw;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1    | varchar(20) | YES  |     | NULL    |       |
| c2    | varchar(30) | YES  |     | NULL    |       |
| c3    | varchar(12) | YES  |     | NULL    |       |
| c4    | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
 
a和b表的数据概况如下
mysql> select * from a2kw limit 10;
+-----------+-----------+------+----------+
| c1        | c2        | c3   | c4       |
+-----------+-----------+------+----------+
| 662164461 | 131545534 | TOM0 | 20120520 |
| 226662142 | 605685564 | TOM0 | 20120516 |
| 527008225 | 172557633 | TOM0 | 20120514 |
| 574408183 | 350897450 | TOM0 | 20120510 |
| 781619324 | 583989494 | TOM0 | 20120510 |
| 158872754 | 775676430 | TOM0 | 20120512 |
| 815875622 | 631631832 | TOM0 | 20120514 |
| 905943640 | 477433083 | TOM0 | 20120514 |
| 660790641 | 616774715 | TOM0 | 20120512 |
| 999083595 | 953186525 | TOM0 | 20120513 |
+-----------+-----------+------+----------+
10 rows in set (0.01 sec)
 
基本步骤  www.2cto.com  
1、在B表上创建索引
mysql> select count(*) from b2kw;
+----------+
| count(*) |
+----------+
| 20000002 |
+----------+
1 row in set (0.00 sec)
mysql> create index ind_b2kw_c1 on  b2kw(c1);
Query OK, 20000002 rows affected (1 min 2.94 sec)
Records: 20000002  Duplicates: 0  Warnings: 0
数据量为:20000002 ,时间为:1 min 2.94 sec
2、把a、b分别插入中间表temp表中
 
创建中间表
mysql> create table temp  select * from c2kw where 1=2;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
插入数据
mysql> insert into temp  select * from a2kw;
Query OK, 20000002 rows affected (13.23 sec)
Records: 20000002  Duplicates: 0  Warnings: 0
mysql> insert into temp  select * from b2kw;
Query OK, 20000002 rows affected (13.27 sec)
Records: 20000002  Duplicates: 0  Warnings: 0
   www.2cto.com  
mysql> select count(*) from temp;
+----------+
| count(*) |
+----------+
| 40000004 |
+----------+
1 row in set (0.00 sec)
数据量为:40000004 ,时间为:26.50 sec
3、temp建立联合索引,强制索引去掉重复数据
mysql> create index ind_temp_c123 on temp(c1,c2,c3);
Query OK, 40000004 rows affected (3 min 43.87 sec)
Records: 40000004  Duplicates: 0  Warnings: 0
查看执行计划
mysql> explain select c1,c2,c3,max(c4) from temp FORCE INDEX
(ind_temp_c123) group by c1,c2,c3 ;
+----+-------------+-------+-------+---------------+----------
-----+---------+------+----------+-------+
| id | select_type | table | type  | possible_keys | key      
    | key_len | ref  | rows     | Extra |
+----+-------------+-------+-------+---------------+-------------
--+---------+------+----------+-------+
|  1 | SIMPLE      | temp  | index | NULL          | ind_temp_c123 | 71  
   | NULL | 40000004 |       |
+----+-------------+-------+  www.2cto.com  -------+---------------+--------
-------+---------+------+----------+-------+
1 row in set (0.05 sec)
 
mysql> insert into c2kw select c1,c2,c3,max(c4) from temp
FORCE INDEX (ind_temp_c123) group by c1,c2,c3 ;
Query OK, 20000004 rows affected (2 min 0.85 sec)
Records: 20000004  Duplicates: 0  Warnings: 0
实际大约花费实际为:6 min
 
4、删除中间表
mysql> drop table temp;
Query OK, 0 rows affected (0.99 sec)
实际大约花费实际为:1 sec
 
5、建立c索引
mysql> create index ind_c2kw_c1 on c2kw(c1);
Query OK, 20000004 rows affected (49.74 sec)
Records: 20000004  Duplicates: 0  Warnings: 0
mysql> create index ind_c2kw_c2 on c2kw(c2);
Query OK, 20000004 rows affected (1 min 47.20 sec)
Records: 20000004  Duplicates: 0  Warnings: 0
mysql> create index ind_c2kw_c3 on c2kw(c3);
Query OK, 20000004 rows affected (2 min 42.02 sec)
Records: 20000004  Duplicates: 0  Warnings: 0
实际大约花费实际为:5分钟  www.2cto.com  
 
6、清空a、b表
mysql> truncate table a2kw;
Query OK, 0 rows affected (1.15 sec)
mysql> truncate table b2kw;
Query OK, 0 rows affected (1.34 sec)

上述就是小编为大家分享的mysql中怎么合并表了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中怎么合并表

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在html中合并表格

怎么在html中合并表格?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HTML的表格及单元格合并表格
2023-06-15

MySQL怎么将两个表格中的内容合并

在MySQL中,可以使用UNION操作符将两个表格中的内容合并。UNION操作符用于将两个或多个SELECT语句的结果集合并为一个结果集。以下是一个示例:假设我们有两个表格,分别为table1和table2,它们具有相同的列结构。我们可以
MySQL怎么将两个表格中的内容合并
2024-03-15

python怎么合并列表中的元素

可以使用`+`操作符将两个列表合并成一个新的列表。例如,假设有两个列表`list1`和`list2`,我们可以使用以下代码将它们合并成一个新的列表`merged_list`:```pythonlist1 = [1, 2, 3]list2 =
2023-09-06

oracle怎么合并两个表

在Oracle中,可以使用INSERT INTO SELECT语句来合并两个表。假设有两个表:table1和table2,它们具有相同的列和相同的数据类型,可以使用以下语法将它们合并成一个新表:```INSERT INTO table1SE
2023-08-25

如何合并两个 MySQL 表?

要合并两个 MySQL 表,请使用以下语法 -INSERT IGNORE INTO yourTableName1 select *from yourTableName2;我们将创建两个包含一些记录的表。之后,合并过程将开始使用上述语法。创建
2023-10-22

sql怎么合并多个表中的数据

在SQL中,可以使用JOIN语句来合并多个表中的数据。JOIN语句用于将两个或多个表中的行连接在一起,形成一个新的结果集。常用的JOIN类型有:1. INNER JOIN:返回两个表中匹配的行。2. LEFT JOIN:返回左表中的所有行,
2023-09-23

sql中union多表合并怎么实现

在SQL中,使用UNION操作符可以将多个表的结果集合并为一个结果集。具体实现方法如下:SELECT column1, column2 FROM table1UNIONSELECT column1, column2 FROM tabl
sql中union多表合并怎么实现
2024-04-09

sql加密的表怎么合并

要合并两个含有加密数据的表,需要先解密其中一个表的数据,然后再将解密后的数据插入到另一个表中。这样可以确保加密数据的完整性和一致性。以下是一种可能的方法:创建一个新的表,该表的结构与两个加密表的结构相同。从第一个加密表中取出数据,并对其
sql加密的表怎么合并
2024-04-08

python怎么合并两个列表

要将两个列表合并,可以使用 "+" 操作符或者 extend() 方法。使用 "+" 操作符:```pythonlist1 = [1, 2, 3]list2 = [4, 5, 6]merged_list = list1 + list2pri
2023-09-20

Java有序链表怎么合并

这篇文章主要介绍了Java有序链表怎么合并的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java有序链表怎么合并文章都会有所收获,下面我们一起来看看吧。问题将两个升序链表合并为一个新的升序链表并返回。新链表是通
2023-07-06

python怎么合并两个列表并排序

在Python中,可以使用`+`操作符来合并两个列表,并使用`sorted()`函数对合并后的列表进行排序。下面是一个示例代码:```pythonlist1 = [1, 3, 5]list2 = [2, 4, 6]merged_list =
2023-08-15

oracle两张表怎么合并成一张表

要合并两张表,你可以使用SQL的`UNION`操作符。`UNION`操作符用于合并两个或多个`SELECT`语句的结果集,并返回一个单一的结果集。使用`UNION`操作符合并两张表的语法如下:```sqlSELECT 列名1, 列名2, .
2023-08-09

oracle中怎么使用union合并两个表

在Oracle中,使用UNION操作符可以合并两个或多个表的查询结果。以下是使用UNION合并两个表的基本语法:```SELECT 列1, 列2, ... FROM 表1UNIONSELECT 列1, 列2, ... FROM 表2;```
2023-08-11

sql怎么合并两个数据库中的表

可以使用以下方法合并两个数据库中的表:使用INSERT INTO语句:将源数据库中的表数据插入到目标数据库中的表中。例如:INSERT INTO 目标数据库.目标表SELECT * FROM 源数据库.源表;这将复制源表中的所有数据到目标
sql怎么合并两个数据库中的表
2024-04-09

编程热搜

目录