数据库索引及explain用法

查询一张表的索引字段:show index from tablename

5999951-ff5908e226316969.png
image.png

table : 表的名称

Non_unique : 表示索引值是否可以重复,为0是不能重复,1是可以重复

Key_name : 索引名称,如果是主键的话 则为PRIMARY

Seq_in_index : 索引中序列的序列号,从1开始,如果是组合索引 那么按照字段在建立索引时的顺序排列 如 ('c1', 'c2', 'c3') 那么 分别为 1, 2, 3

Column_name : 字段名

Collation: 列以什么方式存储在索引中。A=有值、升序显示 或 NULL(无分序)

Cardinality : 索引中唯一值的数目的估计值,通过运行 ANALYZE TABLE or myisamchk -a 来更新,基数根据被存储为整数的统计数据来计数,所以对于小表该值没必要太过于精确,而对于大数据量的表来说,改值越大当进行联合时,MySQL使用该索引的机 会就越大。

Sub_part : 索引的长度

  • 部分被编入索引,该值表示索引的长度
  • 整列被编入索引,该值显示为null

Packed : 指示关键字如何被压缩。如果没有被压缩,则为NULL

Null : 该列值有NULL,则为YES,否则为NO

Index_type:所用索引方法(BTREE, FULLTEXT, HASH, RTREE)

Comment:关于在其列中没有描述的索引的信息

Index_comment : 为索引创建时提供了一个注释属性的索引的任何评论



explain

用法:在select语句前加上explain
显示mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

5999951-5b9d16f214b4b218.png
image.png

table:表名
type:显示连接使用的访问类型
从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL
possible_keys:表中可能出现的索引,根据where后的字段得出,如果没写条件会显示NULL

5999951-46f0127b1518a55c.png
possible_keys

key_len:使用的索引的长度

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

rows:MYSQL认为必须检查的用来返回请求数据的行数

Extra:额外信息

猜你喜欢

转载自blog.csdn.net/weixin_33895604/article/details/87347823
今日推荐