mysql优化--索引
Mysql索引大概有五种类型:
普通索引(INDEX):最基本的索引,没有任何限制
唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。
全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。
联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。
1.针对使用联合索引时,遵循”最左前缀“原则
效率从高到低:使用全部索引>部分索引(包含第一个)>不走索引(不包含第一个索引)
(1):第一个字段使用模糊查询
第一个字段使用模糊查询对之后的查询条件使用索引是没有影响的。
(3):使用between关键字范围查询
explain select * from t where c1 between '1' and '3' and c2 = '1' and c3 = '1' and c4 = '1';
全索引匹配。
(4):使用“>”“<”进行范围查询
使用 > < 的时候,会对索引产生影响,通过上边的查询结果我们可以发现当第一个字段使用范围查询之后,后边的条件便不会再走索引了。
EXPLAIN Output Columns
列名 | 说明 |
---|---|
id | 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。否则,内层的select语句一般会顺序编号,对应于其在原始语句中的位置 |
select_type | 显示本行是简单或复杂select。如果查询有任何复杂的子查询,则最外层标记为PRIMARY(DERIVED、UNION、UNION RESUlT) |
table | 访问引用哪个表(引用某个查询,如“derived3”) |
type | 数据访问/读取操作类型(ALL、index、range、ref、eq_ref、const/system、NULL) |
possible_keys | 揭示哪一些索引可能有利于高效的查找 |
key | 显示mysql决定采用哪个索引来优化查询 |
key_len | 显示mysql在索引里使用的字节数 |
ref | 显示了之前的表在key列记录的索引中查找值所用的列或常量 |
rows | 为了找到所需的行而需要读取的行数,估算值,不精确。通过把所有rows列值相乘,可粗略估算整个查询会检查的行数 |
Extra | 额外信息,如using index、filesort等 |
标签:--,mysql,查询,索引,使用,select From: https://www.cnblogs.com/caoaman/p/17594599.html