「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」。
一、mysql中如何查看索引
在mysql中使用show index from table查看表的索引情况。下图即执行后的情况。
二、各个字段的含义
- table表名
- Non_unique 如果索引不能包括重复值则为0,如果可以则为1。也就是我们平时所说的唯一索引。
- Key_name 索引名称,如果名字相同则表明是同一个索引,而并不是重复,名字相同的是联合索引。
- Seq_in_index 索引中的列序列号,从1开始。表明在联合索引中的顺序,我们可以通过它推断出联合索引中索引的前后顺序。
- Column_name 索引的列名。
- Collation 列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。
- Cardinality 是基数的意思,表示索引中唯一值的数目的估计值。我们知道某个字段的重复值越少越适合建索引,所以我们一般都是根据Cardinality来判断索引是否具有高选择性,如果这个值非常小,那就需要重新评估这个字段是否适合建立索引。基数越大,使用此索引的机会就越大
- Sub_part 前置索引的意思,如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
- Packed 指示关键字如何被压缩。如果没有被压缩,则为NULL。压缩一般包括压缩传输协议、压缩列解决方案和压缩表解决方案。
- Null 如果列含有NULL,则含有YES。
- Index_type表示索引类型,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。
- Comment和Index_comment:注释的意思。
三、总结
一般我们要优化sql时,会查看表中是否有索引,如果有索引,那么尝试让sql走索引。或者是建立了索引之后,用于查看建立这个索引是否合理。