表索引操作

这里之所以写索引的操作主要原因在于:在导入数据前删除索引能大大提升导入速度。

DDL语句获取现有索引1show create table t_question_bak;

获取所有索引

获取单一索引1

2

3

4

5

6SELECT TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,COLUMN_NAME,SEQ_IN_INDEX,NON_UNIQUE,INDEX_TYPE

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1;

或者1show index from t_question_bak;

创建表索引

基本语法

在已有的表中建立索引的语法:1ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [索引名](字段名1 [(长度)] [ASC|DESC]) [USING 索引方法];

或者1CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名(字段名) [USING 索引方法];

例子:1ALTER TABLE projectfile ADD UNIQUE INDEX (fileuploadercode);

或者1create index index_id on sorc4(s_id);

获取建表普通索引SQL1

2

3

4

5

6

7SELECT CONCAT('ALTER TABLE ',i.TABLE_NAME,' ADD INDEX ',i.INDEX_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.NON_UNIQUE=1;

或者1

2

3

4

5

6

7SELECT CONCAT('CREATE INDEX ',i.INDEX_NAME,' ON ',i.TABLE_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.NON_UNIQUE=1;

获取表全文索引SQL1

2

3

4

5

6

7SELECT CONCAT('ALTER TABLE ',i.TABLE_NAME,' ADD FULLTEXT INDEX ',i.INDEX_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.INDEX_TYPE='FULLTEXT';

或者1

2

3

4

5

6

7SELECT CONCAT('CREATE FULLTEXT INDEX ',i.INDEX_NAME,' ON ',i.TABLE_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.INDEX_TYPE='FULLTEXT';

获取建表唯一索引SQL1

2

3

4

5

6

7SELECT CONCAT('ALTER TABLE ',i.TABLE_NAME,' ADD UNIQUE INDEX ',i.INDEX_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.NON_UNIQUE=0;

或者1

2

3

4

5

6

7SELECT CONCAT('CREATE UNIQUE INDEX ',i.INDEX_NAME,' ON ',i.TABLE_NAME,'(',i.COLUMN_NAME,');')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY'

AND i.SEQ_IN_INDEX=1

AND i.NON_UNIQUE=0;

删除表索引

导入数据前删除表索引能大大提升数据的导入效率1ALTER TABLE 表名 DROP INDEX 索引名;

或1DROP INDEX 索引名 ON 表名;

生成删除索引的SQL(排除主键索引)1

2

3

4

5SELECT CONCAT('ALTER TABLE ',i.TABLE_NAME,' DROP INDEX ',i.INDEX_NAME,';')

FROM INFORMATION_SCHEMA.STATISTICS i

WHERE TABLE_SCHEMA = 'xhkj_ques_0923'

AND TABLE_NAME='t_question_bak'

AND i.INDEX_NAME <> 'PRIMARY';

复制运行即可

一、最简单的方法1create table t2 as select * from t1;适用表数据量小的情况

二、SQL形式

mysqldump逻辑导出1mysqldump -h127.0.0.1 -P3306 -uroot -p123456–add-locks=0

表示在输出的的文件结果里,不增加”lock tbales t2 write”

–no-create-info

不需要导出表结构

–single-transaction

不需要对t2进行加锁,而是使用start transaction with consistent snapshop的方法

-set-gtid-purged=off

不导出gtid相关信息

–where=’c1>4’

过滤条件

–result-file

指定导出文件的路径

三、CSV文件形式

创建t3表结构1create table t3 like t2;

导出需要导出t2的数据1

2

3

4

5# 全部导出

SELECT * FROM t2 INTO OUTFILE '/var/lib/mysql-files/t2.csv' FIELDS TERMINATED BY ',';

# 部分导出

SELECT * FROM t2 WHERE c1>4 INTO OUTFILE '/var/lib/mysql-files/t2.csv' FIELDS TERMINATED BY ',';

将csv文件导入到t31LOAD DATA INFILE '/var/lib/mysql-files/t2.csv' INTO TABLE t3 FIELDS TERMINATED BY ',';

四、物理拷贝的方法

1、创建t3表结构1create table t3 like t2;

2、执行1alter table t3 discard tablespace;

此时t3.ibd会被删除

3、执行1flush table t2 for export;

此时test01目录下会生成一个t2.cfg文件

4、拷贝t2.ibd,t2.cfg,注意权限1

2cp t2.cfg t3.cfg

cp t2.ibd t3.ibd

5、解除表锁定1unlock tables;

这时候t2.cfg会被删除

6、执行1alter table t3 import tablespace;

将t3.ibd作为t3新的表空间,数据和t2也是相同的。

总结对于大表,物理拷贝方法最快,对于误删表的情况,比较有用,但是也存在一定的弊端:必须是全表拷贝;

必须能连服务器;

源表和目标表都必须是innodb存储引擎。

mysqldump方法可以生成insert的语句,可以加过滤条件拷贝部分数据,但是不能使用join这种比较复杂的条件。

select .... into outfile的方法最灵活,但是缺点是每次只能导出一张表。

mysql++快速复制大表_MySql数据库表快速复制相关推荐

  1. mysql是自动表锁定吗_MySQL数据库表怎么锁定

    如果你同时运行表的检查/修复程序时,你或许不想让MySQL服务器和实用程序同时访问一个表.如果两个程序都向表中写数据显然会造成很大的麻烦,甚至会有意外情况发生.如果表正由一个程序写入,同时进行读取的另 ...

  2. mysql的关系表_mysql 数据库表间关系图怎么查看?

    展开全部 mysql数据库表间的关系图可以通过navicat查看: 第一步:下载navicat打开: 第二步:点击navicat界面最右下角标注的按钮即可62616964757a686964616fe ...

  3. mysql怎么删除表中字段的数据库表_Mysql 数据库 表 字段的创建 修改 删除

    MYSQL基础上机练习题(一) 数据库.表.字段的创建.修改.删除 一.实验目的: 创建.修改.删除数据库 创建.修改.删除表 创建.修改.删除字段 二.内容: 创建一个用于企业管理的员工管理数据库, ...

  4. mysql前两个月_MySQL数据库表始终保持最近两个月的记录

    实现自动备份的方法很多,这里说的是客户需要始终保持某个表中存储两个月的记录,以便保持性能.过期数据我们建议存储到另外一个表中,以备以后查询使用. 我们采用存储过程+linux Crontab的方式实现 ...

  5. mysql数据库操作宠物表_mysql数据库及表的基本操作

    1. 数据库操作 1.1 创建数据库 # 创建数据库 mysql> create database db_test; # 查看创建好的数据库 mysql> show create data ...

  6. mysql黑窗口常用命令_mysql数据库常用命令

    1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show ...

  7. linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06

    Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...

  8. mysql周德伟课后答案_mysql数据库搜索

    MySQL 数据库考试试题 及答案精编 Document number:WTT-LKK-GBB-08921-EIGG-22986 专业:移动通信 科目:MySQL 数据库 一.单项选择题 1.以下聚合 ...

  9. 【超详细Django网站开发过程2】便利店管理系统之——创建数据库→定义数据库表→创建数据库表

    假装自己拥有一家小便利店,名叫--7-Twelve,我希望制作一个便利店管理系统对我的顾客.销售人员.货物等数据进行管理,先不管前端,后端总免不了对数据的一顿操作,那如何在Django中对数据库进行增 ...

最新文章

  1. 如何测量情感和感觉(以及它们之间的区别)?
  2. 基于BP弱分类器用Adaboost的强分类器
  3. Acwing第 10 场周赛【未完结】
  4. x shell 配置 和相关注意点(vm相关注意点)
  5. PostMessage与SendMessage
  6. 计蒜客 - Distance on the tree(LCA+主席树)
  7. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s
  8. axure9数据统计插件_WMDA:大数据技术栈的综合实践
  9. python 装饰器 继承_Python设计模式之装饰器模式
  10. Struts2执行流程
  11. iOS中的三大定时器
  12. html实体编码_为什么涨薪的永远不是你?你的编码姿势对了吗?
  13. 数学建模之初等模型详解
  14. java二叉树删除节点
  15. 网易AI平台开放多项技术,助力网易七鱼智能客服升级
  16. excel查重模型,老板不要再烦我
  17. Unity中角色基本属性与数值的管理
  18. 取得高等学校教师资格证应当具备什么学历要求
  19. 利用opencv带你玩转人脸识别-中篇(人脸检测,检测多个,视频检测快速入门)
  20. AVR USART接收中断程序

热门文章

  1. 酒店无线覆盖方案实施
  2. 手机上的大数据:移动互联网的入口
  3. 使用numpy生成二维正态分布
  4. I - Inverted Deck
  5. JS 调用 麦克风 检测实时音量
  6. plink执行linux命令网络异常,Shell中使用plink工具实现远程批量关机
  7. iOS 按钮加下划线随之移动
  8. P3802不死(二分答案+状压dp验证)
  9. JS | 数组新增元素
  10. 五笔的字典序编码与解码