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 之后的版本 ...
随机推荐
- CentOS 下环境变量
1. 显示环境变量HOME(不要把一个#号输进去了,#代表用户名) # echo #HOME /home/redbooks 2. 设置一个新的环境变量hello # export HELLO=&quo ...
- 165. Compare Version Numbers (String)
Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 & ...
- 使用Python计算IP、TCP、UDP校验和
IP数据报的校验: IP数据报只需要对数据头进行校验,步骤如下: 将接收到的数据的checksum字段设置为0 把需要校验的字段的所有位划分为16位(2字节)的字 把所有16位的字相加,如果遇到进位, ...
- fbx模型加载的材质球路径
选择Location为外部加载时,会通过搜索来读取外部文件 From Model's Material 搜索项目中Materials文件 [ModelName].mat 会优先搜索当前子文件夹有没有 ...
- 对于装office 365时,visio不兼容的解决
先将office 365装好,之后从这个网址下载visio安装即可,但是没有 激活码,需要自己激活: 网址:链接: https://pan.baidu.com/s/1OqONPuJ0eumrpts-X ...
- bbs项目富文本编辑器实现上传文件到media目录
media目录是在project的settings中设置的,static目录是django自己使用的静态文件的上传目录,media目录是用户自定义上传文件的目录 # Django用户上传的文件都放在m ...
- Win7 IIS 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的
因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改.运行命令行 %windir%\system32\inetsrv\appcmd unlock conf ...
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- css兼容性写法大全
淘宝初始化代码 body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset ...
- go语言中操作mysql的方法
需要下载指定的golang的mysql驱动包 > go get github.com/go-sql-driver/mysql 下面的例子: package main; import ( &quo ...