mysql 只--sql执行语句的详情

Posted CKben

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 只--sql执行语句的详情相关的知识,希望对你有一定的参考价值。

使用 EXPLAIN 函数可以清楚的查看语句的执行情况


EXPLAIN select id from b_nc_card where id
!= 10000;

 

一共查询了:530912 行 

优化后

 

EXPLAIN
(select id from b_nc_card where id > 10000)
 union all
(select id from b_nc_card where id < 10000 and id > 0)
1    SIMPLE    b_nc_card        range    PRIMARY    PRIMARY    4        530912    100.00    Using where; Using index

 

 

 一共查询了:511856  +  19032  = 530888  行 

概要描述:
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明 Using where; Using index(出现这个说明是最优解)

注: 主要关注的是,type 和 key

type = ALL :表示全表扫描

type = const :表示通过索引一次就找到了

type = ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。

type = index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。

type = range:只检索给定范围的行,使用一个索引来选择行。

key = NULL:表示没有使用索引

key = primary :表示使用了主键

 

以上是关于mysql 只--sql执行语句的详情的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中嵌套时候用in 和=有啥区别

mysql语句执行顺序

Mysql 语句执行顺序

Nodejs使用MySQL执行insert 语句时报错:1064

MYSQL 查询语句中in的用法

Navicat for MySQL常见命令