mqsql数据库索引和explain使用

索引

优点:
通过建立唯一索引或者主键索引,可以保证数据库表中每一行数据的唯一性,大大提高检索的数据的效率,以及减少表的检索行数。
缺点:
在创建索引和维护索引,会耗费时间,随着数据量的增加而增加,索引文件占用物理空间,当对表的数据进行增、删、改的时候,索引也要动态的维护,这样就会降低数据的维护速度。

索引分成单列索引和组合索引

单列索引:
一个索引只包含一个列,可以有多个单列索引(主键索引,唯一索引,普通索引)

组合索引:
一个组合索引包含两个或者两个以上的列

普通索引
CREATE INDEX 索引名 ON 表名(字段名)
在这里插入图片描述
ALTER RABLE 表名 ADD INDEX 索引名(字段名)
在这里插入图片描述
唯一索引 —— 与普通索引类似,必须唯一,可以有空值
CREATE UNIQUE INDEX 索引名 ON 表名(字段名)
在这里插入图片描述
ALTER RABLE 表名 ADD UNIQUE (字段名)
mqsql数据库索引和explain使用_第1张图片

主键索引 —— 必须是唯一且不可以有空值
创建表时添加 或者 ALTER TABLE 表名 ADD PRIMARY KEY(字段)

删除索引
DROP INDEX 索引名称 ON 表名
在这里插入图片描述BTREE原理浅析
mqsql数据库索引和explain使用_第2张图片mqsql数据库索引和explain使用_第3张图片EXPLAIN —— 用法
explain + sql语句

得到的表头信息如下:
在这里插入图片描述id —— 决定表的读取和加载顺序,id如果相同,可以认为是一组,从上往下顺序执行,在所有组中,id值越大,越先执行。

select_type —— 查询的类型,主要是用于区分普通查询,联合查询,子查询等的复杂查询。
mqsql数据库索引和explain使用_第4张图片mqsql数据库索引和explain使用_第5张图片type —— 显示的是访问类型,是较为重要的一个指标,结果值从最好到最坏的排序依次是
system>const>eq_ref>ref>range>index>ALL
一般来说至少达到range级别,最好能达到ref
mqsql数据库索引和explain使用_第6张图片possible_keys —— 显示可能应用在这张表中的索引,一个或多个,查询涉及到的字段上若存在的索引,则该索引被列出,但不一定被查询实际使用。

key —— 实际使用的索引,如果为null,则没有使用索引,查询中若使用了覆盖索引,则该索引仅出现在key列表中。

key_len —— 表示索引中使用的字节数,可通过该列计算查询中使用的索引长度,在不损失精确性的情况下,长度越短越好,key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索来的。

ref —— 显示索引的那一列被使用,如果可能的话,是一个常数,哪些列或常量被用于查找索引列上的值。

rows —— 根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数

Extra ——

你可能感兴趣的:(sql函数)