一 备份数据

备份库:

 mysqldump:拷贝数据

  --database:数据库

 基本语法是:mysqldump -h服务器名 -u用户名 -p密码 --database 库名 > 备份路径.sql :后缀名

  --all-database:备份所有的库

  --databases:备份多个库

 备份的数据名里面最好加上时间和日期。

  锁住表的操作主要是为了为了一个一个的操作记录,不然记录就会乱。

恢复库:

 mysqlload -u用户名 -p密码 <文件路径

备份表:

 mysqldump -u用户名 -p密码 库名.表名 >备份到的路径

 mysqldump -u用户名 -p密码 库名.表名 表名 表名。。。>备份到的路径          mysqldump -u用户名 -p密码 库名.表名 库名.表名。。。>备份到的路径   :多个表同时备份

恢复表:

 mysqlload -u用户名 -p密码 恢复到哪个库 >数据的路径

1 语法:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 2
备份库
mysqldump -uroot -p --database day45 > C:\\day45_bak_2017_10_30.sql 恢复库
mysql -uroot -p < C:\\day45_bak_2017_10_30.sql 3
备份多个库
mysqldump -uroot -p --databases day43 day44 day45 > C:\\day43_day45_day44_bak_2017_10_30.sql 恢复库
mysql -uroot -p < C:\\day45_bak_2017_10_30.sql 4
备份多个表
mysqldump -uroot -p day45 employee t1 t2 > C:\\day45_t1_t2_employee_bak_2017_10_30.sql 恢复表
mysql -uroot -p day45 < C:\\day45_t1_t2_employee_bak_2017_10_30.sql 5 备份所有的库
mysqldump -uroot -p --all-databases > C:\\all.sql 恢复库
mysql -uroot -p < C:\\all.sql

二 表的导入导出

 into:放到哪个文件

 outfile:哪个文件

 fields terminated by:字段的分割符

 lines terminated by:行的分割符

 optionally  enclosed by '符号':定义用什么符号括起来

 lines terminated by '\n' :定义换行符

 varidbles:系统参数,用来初始化或者设定数据库对系统资源的占用。详细信息:https://zhidao.baidu.com/question/985034511048325699.html

 global  secure_file_priv  '路径':scure-file-priv参数是来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传入哪个指定目录的

    详细信息:https://segmentfault.com/a/1190000009333563

 opltonally enclosed by :自定义分割符

导出表
mysql> SELECT * FROM school.student1
INTO OUTFILE 'student1.txt'
FIELDS TERMINATED BY ',' //定义字段分隔符
OPTIONALLY ENCLOSED BY '”' //定义字符串使用什么符号括起来
LINES TERMINATED BY '\n' ; //定义换行符 导入表
mysql> LOAD DATA INFILE '/tmp/student1.txt'
INTO TABLE school.student1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '”'
LINES TERMINATED BY '\n';

三 mysql的索引原理

 使用索引优化了查看的的时间,索引就是使用目录定位记录的位置。操作步骤都是差不多,省略掉了无用的查约束,提高了查询的速度。

 primary和unique都属于索引,在mysql中索引都叫做键,而有的键又约束的功能,没有这些约束功能的都是普通的索引。

 索引的原理:不断的缩小查询的范围,筛选出最终的结果。同时将随机的事件变成有序的事件。而简单的分段没有办法优化查询速度。

 索引的方式分为两种,分别是哈希(hash)和btree

 机械硬盘的知识:机械硬盘就是有一个或者多个盘片和其他的机械组成。如下:

 找到一个磁道的时间就叫做平均寻到时间,范围大约在5ms以下。

 转一圈然后在除以2的结果就是平均延迟时间,大月约在:1/120/2 = 4.17ms左右。

  找到数据的时间是在平均寻道时间加上平均延迟时间稍微的多一点。

 什么叫做磁盘块:一次向内存读的数据量大小,也叫做block块。在linux系统中默认是4k。磁盘块不是一个物理单位,而是一个逻辑单位。

  物理单位为512个字节。是寻到的大小的一半。

  磁盘块包含的有数据项,除了数据项还有指针。

  在一个磁盘块中,数据项是双双对应的左边的一个数对应着右边的一个数。

 数据项的大小与数据项个数成反比的,数据项的越小,存放的个数就会越多。

 索引存放的数据在硬盘中,而他们查找的次数就受限用于存放的层级。层级月到查找的次数就会越多。

  正确的索引存放方法是把数据量小的并且还要唯一的字段选做数据项。

测试索引:

 创建表:

  

#1. 准备表
create table s1(
id int,
name varchar(20),
gender char(6),
email varchar(50)
); #2. 创建存储过程,实现批量插入记录
delimiter $$ #声明存储过程的结束符号为$$
create procedure auto_insert1()
BEGIN
declare i int default 1;
while(i<1232636)do
insert into s1 values(i,'egon','male',concat('egon',i,'@oldboy'));
set i=i+1;
end while;
END$$ #$$结束
delimiter ; #重新声明分号为结束符号 #3. 查看存储过程
show create procedure auto_insert1\G #4. 调用存储过程
call auto_insert1();

在表中为以存在的大量数据下,为某个字段建立索引,建立速度会很慢

create index a on 表名(字段名);

mysql> create index a on s1(id);
Query OK, 0 rows affected (23.47 sec)
Records: 0 Duplicates: 0 Warnings: 0

在索引建立好了以后,以该字段作为查询条件时,时间会很快

mysql> select * from s1 where id=1000000;
+---------+------+--------+--------------------+
| id | name | gender | email |
+---------+------+--------+--------------------+
| 1000000 | egon | male | egon1000000@oldboy |
+---------+------+--------+--------------------+
1 row in set (0.14 sec)

 1 mysql先去表里面的b+数的搜索原理很快就会找到该索引字段的记录存不存在或着存放在哪个位置。以数据量小的作为索引的字段明显速度提升了很多。

 2 如果使用数据量大的字段作为索引的字段,速度依然还是很慢。

mysql之索引查询1的更多相关文章

  1. MySQL多索引查询选择

    MySQL多索引查询选择 MySQL选择索引-引入 我们知道我们一个表里面可以有多个索引的,那么我们查询数据的时候不指定索引,MySQL就会帮我们自动选择.既然是MySQL程序帮我们自动选择的那么会不 ...

  2. mysql之索引查询2

    一 索引的创建 索引减慢了 写的操作,优化了读取的时间 index:普通索引,加速了查找的时间. fulltext:全文索引,可以选用占用空间非常大的文本信息的字段作为索引的字段.使用fulltext ...

  3. MySQL数据库索引:索引介绍和使用原则

    本篇目录: 一.数据页与索引页 二.聚簇索引与非聚簇索引 三.唯一索引 四.索引的创建 五.索引的使用规则 六.数据库索引失效情况 本篇正文: 一.数据页与索引页 数据库的表存储分为数据页存储和索引页 ...

  4. mysql使用索引优化查询效率

    索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没 ...

  5. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  6. Mysql 版本号、存储引擎、索引查询

    [1]Mysql 版本号.存储引擎.索引查询 # 查看数据库版本号 SELECT VERSION(); # 查看数据库支持的引擎(默认即Support == DEFAULT行) SHOW ENGINE ...

  7. 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询

    MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...

  8. MySQL索引查询原理

    什么是索引? “索引”是为了能够更快地查询数据.比如一本书的目录,就是这本书的内容的索引,读者可以通过在目录中快速查找自己想要的内容,然后根据页码去找到具体的章节. 数据库也是一样,如果查询语句使用到 ...

  9. mysql in条件查询到底会不会用到索引

    MySQL 的 in 查询在 5.5 以上的版本中存储引擎都是 innodb 的,正常情况下会走索引的!至于 MyISAM 没试过! 如果是 5.5 之前的版本确实不会走索引的,在 5.5 之后的版本 ...

随机推荐

  1. OpenVPN 2.2.1 之后期维护

    一.Openvpn 用户注销 每个公司都会用员工离职,因此注销vpn用户也就成了运维人员日常工作的一部分. 其实Openvpn在设计的时候也想到了这点,我们可以使用 revoke-full shell ...

  2. JTAG-测试数据寄存器

    1.问题:JTAG中的数据寄存器的结构 JTAG标准规定了两个必须的数据寄存器: 1.旁通寄存器 2.边界扫描寄存器(已经在可测性设计-扫描通路中介绍了) 可选的的寄存器有: 1.器件标示寄存器(32 ...

  3. window中磁盘空间不足但是找不到使用空间的文件

    今天看到 电脑的  d盘 空间爆红,空间满了,去找了找没有找到具体是哪个文件占用的空间.一个一个文件的查看属性,都没有找到.文件都不大,几百个g的空间就没了.莫名其妙!!! 自己开启了备份还原,存储的 ...

  4. Oracle触发器用法实例详解

    转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ...

  5. 牛客练习赛17 C 操作数(组合数+逆元)

    给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. 执行a = s: 现在 ...

  6. 动态替换iframe的src及动态改变iframe的高度

    实现效果:点击左侧右侧内容变化,但左侧保持不变(如折叠等) 动态替换iframe的src <iframe width="100%" frameBorder="0&q ...

  7. EasyUI 在Tab页用button打开新Tab

    标签: <a href="javascript:void(0)" class="easyui-linkbutton" id="ipConfig& ...

  8. JFinal Model判断数据库某条记录的属性字段是否包含空值

    如果做报表,一条记录中有空值,使用FreeMarker渲染word会报错,并把错误日志输出到Word中.所以需要之前判断下当前记录中属性值是否有空值. package com.huijiasoft.u ...

  9. System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed.

    项目代码如下 ServiceController service = new ServiceController("ModbusAgent"); service.Stop(); T ...

  10. CentOS 7系统关闭yum自动下载更新

    安装CentOS 7后,系统yum自动更新状态默认为开启,若禁止系统自动更新需要手动关闭. 1.进入yum目录 [root@localhost ~]$ cd /etc/yum 2.编辑yum-cron ...