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 之后的版本 ...
随机推荐
- 牛客网练习赛43-C(图论)
题目链接:https://ac.nowcoder.com/acm/contest/548/C 题意:有n个知识点,学会每个知识点花T[i],已经学会了其中k个知识点,有m组关系,t1,t2,t3,表示 ...
- SRVE0255E: 尚未定义要处理 ***的 Web 组/虚拟主机。
原因: 访问的端口未设置,因此无法访问 解决办法: 1.设置端口 控制台-环境-虚拟主机-default_host-主机别名-新建 主机名根据实际情况填写 笔者这里填如下 2.设置好端口后重启对应服务 ...
- 抛弃WebService,在.NET4中用 jQuery 调用 WCF
在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebServic ...
- lower_bound和upper_bound的实现和基本用法
最近一直在学dp,但是感觉进度明显慢了很多,希望自己可以加一把劲,不要总是拖延了... 在LIS的优化中我遇到了二分查找的问题,之前也知道lower_bound和upper_bound两个函数,但是没 ...
- Cisco ASR1002-X告警处理
客户反馈其机房的ASR100X告警,拍照如下图: 处理步骤: 查看日志未发现异常 查看CPU/内存/风扇未发现异常 3.清除告警#clear facility alarm依旧告警 4.shutdown ...
- sqlserver判断字段是否存在更改字段
use naire go if COL_LENGTH('options','optionsGroup') is null begin--options为表名,optionsGroup为列名 alter ...
- swift - 使用系统app导航
import UIKit //1.导入框架 import MapKit class ViewController: UIViewController { lazy var geoCoder : CLG ...
- 畅谈Redis和Memcached的区别
简述 memcached 和 redis 都很类似:都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存. 那么题主说 memc ...
- 使用json要导入什么包
json-lib-2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar c ...
- C# oracle 日期型字段,使用参数传值时,遇到ORA-01810: format code appears twice错误
C#操作oracle数据库时,发现使用to_date('2014-01-03 18:00:00','yyyy-mm-dd hh:MM:ss')时,会出现ORA-01810: format code a ...