mysql之索引查询1
一 备份数据
备份库:
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的更多相关文章
- MySQL多索引查询选择
MySQL多索引查询选择 MySQL选择索引-引入 我们知道我们一个表里面可以有多个索引的,那么我们查询数据的时候不指定索引,MySQL就会帮我们自动选择.既然是MySQL程序帮我们自动选择的那么会不 ...
- mysql之索引查询2
一 索引的创建 索引减慢了 写的操作,优化了读取的时间 index:普通索引,加速了查找的时间. fulltext:全文索引,可以选用占用空间非常大的文本信息的字段作为索引的字段.使用fulltext ...
- MySQL数据库索引:索引介绍和使用原则
本篇目录: 一.数据页与索引页 二.聚簇索引与非聚簇索引 三.唯一索引 四.索引的创建 五.索引的使用规则 六.数据库索引失效情况 本篇正文: 一.数据页与索引页 数据库的表存储分为数据页存储和索引页 ...
- mysql使用索引优化查询效率
索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没 ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- Mysql 版本号、存储引擎、索引查询
[1]Mysql 版本号.存储引擎.索引查询 # 查看数据库版本号 SELECT VERSION(); # 查看数据库支持的引擎(默认即Support == DEFAULT行) SHOW ENGINE ...
- 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询
MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...
- MySQL索引查询原理
什么是索引? “索引”是为了能够更快地查询数据.比如一本书的目录,就是这本书的内容的索引,读者可以通过在目录中快速查找自己想要的内容,然后根据页码去找到具体的章节. 数据库也是一样,如果查询语句使用到 ...
- mysql in条件查询到底会不会用到索引
MySQL 的 in 查询在 5.5 以上的版本中存储引擎都是 innodb 的,正常情况下会走索引的!至于 MyISAM 没试过! 如果是 5.5 之前的版本确实不会走索引的,在 5.5 之后的版本 ...
随机推荐
- SSH 连接很慢
相信很多朋友在使用Linux系统的时候因为安全性的原因摒弃了telnet rlogin 或者 X-window,而把openssh作为自己默认的远程登录方式.然而经常会遇到的一个情况是telnet到s ...
- 高级测试岗位面试题---MARK
直接手写一个python类 直接手写一个构造函数 紧接着上面的代码,直接手写,补充完整代码,要求对列表中的人进行排序,并筛选出分数大于80的人的名单,组成一个新的列表显示出来. class Perso ...
- linux环境下的c++编程
就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...
- 202. Happy Number (INT)
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...
- 支付宝H5 与网页端支付开发
在日常生活中,我们基本上都是进行微信与支付宝的支付方式尽心支付,这种方式确实大大便利了我们的生活,那么如何在我们的产品中进行微信与支付宝支付的植入开发呢? 我们先进行支付宝的H5与网页端支付开发,这里 ...
- YII2表单中上传单个文件
有些时候我们提交的表单中含有文件.怎么样让表单里的数据和文件一起提交. 我的数据表tb_user内容如下: CREATE TABLE `tb_user` ( `id` int(11) unsigned ...
- BCH/BSV coin split troubleshooting
BCH/BSV coin split troubleshootingMark Lundeberg 2018 November 27ResourcesGuides:Locktime based spli ...
- jquery过滤class为aa的div
三种方式 $(".aa").filter("div").each(function(){ alert($(this).html()); }); $(" ...
- Oracle_PL/SQL(1) 匿名块
1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库.为什么使用PL/SQL?Orade是一种关系型数据库, 用来访问关系型数据库的语言是 “结构 ...
- 4. 深入 Python 流程控制
除了前面介绍的 while 语句,Python 还从其它语言借鉴了一些流程控制功能,并有所改变. 4.1. if 语句 也许最有名的是 if 语句.例如: >>> x = int(i ...