mysql(windows常用命令)

最近对mysql 的索引想深入的了解一下,于是乎就写了个这。

1.使用场景描述:有些公司线上不能直接用数据库工具连接,因为没有暴露出外部链接的接口,于是乎我们只能通过跳板机登录上服务器在连接上想要连接的数据库。

2.首先是登录mysql:

2.1 先进入mysql 的命令小工具的目录下输入:mysql -hlocalhost -uroot -proot,于是乎就登陆了。

image

2.2 其次查看数据库:show database;
image

2.3 还有选择数据库:use db_o2m;
image

2.4 显示数据库的表:
image

2.5 sql 的执行计划: explain select * from user where id = 1 limit 10\G;
image

我们主要是看 possible_keys 和 key 就可以看出这是主键索引。

3.下面是个字段的说明:

3.1、select_type列常见的有:

A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个

B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary。且只有一个

** 3.2、table **

显示的查询表名,如果查询使用了别名,那么这里显示的是别名,如果不涉及对数据表的操作,那么这显示为null,如果显示为尖括号括起来的就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。如果是尖括号括起来的,与类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。

3.4、type

A:system:表中只有一行数据或者是空表,且只能用于myisam和memory表。如果是Innodb引擎表,type列在这个情况通常都是all或者index

B:const:使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type是const。其他数据库也叫做唯一索引扫描

3.5、possible_keys

查询可能使用到的索引都会在这里列出来

3.6、key

查询真正使用到的索引,select_type为index_merge时,这里可能出现两个以上的索引,其他的select_type这里只会出现一个。

3.7、key_len

用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去。留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。另外,key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中。

3.8、ref

如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func

3.9、rows

这里是执行计划中估算的扫描行数,不是精确值

3.10、extra

这个列可以显示的信息非常多,有几十种。

3.11、filtered

使用explain extended时会出现这个列,5.7之后的版本默认就有这个字段,不需要使用explain extended了。这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数。

你可能感兴趣的:(mysql(windows常用命令))