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 :表示使用了主键

 

posted @ 2020-06-19 18:55  AlexZS  Views(362)  Comments(0Edit  收藏  举报