美文网首页
mysql唯一索引 覆盖索引

mysql唯一索引 覆盖索引

作者: matthewfly | 来源:发表于2021-03-03 11:00 被阅读0次

当mysql唯一索引是组合索引时,如果查询条件满足组合索引的覆盖条件,同样将是覆盖索引。

测试:
新建表t:

mysql> desc t;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | bigint      | YES  | MUL | NULL    |       |
| name  | varchar(20) | YES  | MUL | NULL    |       |
| type  | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

添加唯一索引:

alter table t add unique index test_unique(id,name,type);

explain select * from t where id=1 and name='y';查看索引使用情况:

+----+-------------+-------+------------+------+---------------+-------------+---------+-------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key         | key_len | ref         | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------------+------+----------+-------------+
|  1 | SIMPLE      | t     | NULL       | ref  | test_unique   | test_unique | 92      | const,const |    1 |   100.00 | Using index |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

可以看到使用了索引test_unique。

  • 索引下推
    mysql5.6之前,当遇到第一个范围查询语句时就停止了组合索引的匹配。例如上面表中有组合索引(id,name,type),此时执行
select * from t where id>1 and name='y';

在5.6版本之前,只会匹配组合索引的id,后面的name不会走索引,命中id>1的每一项都会回表进行name=“y”的查询匹配。
5.6之后,mysql会优化sql往下推导,匹配索引name,减少回表次数。

相关文章

  • mysql唯一索引 覆盖索引

    当mysql唯一索引是组合索引时,如果查询条件满足组合索引的覆盖条件,同样将是覆盖索引。 测试:新建表t: 添加唯...

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL索引

    MySQL索引 索引介绍 索引原理与分析 组合索引 索引失效分析 索引介绍 什么是索引索引:包括聚集索引、覆盖索引...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

  • MySQL操作索引

    MySQL操作索引 增加普通索引 增加唯一索引 删除索引

  • 辅助索引种类细分

    单列的辅助索引 联合多列辅助索引(覆盖索引) 唯一索引

  • Mysql 相关

    MySQL索引 MySQL索引背后的数据结构及算法原理 覆盖索引和回表操作 MySQL性能优化 MySql表分区详...

  • mysql

    1.mysql索引的类型,主键索引、唯一索引、普通索引、组合索引、全文索引,b-tree索引 2.mysql具体有...

  • mysql的索引问题和sql优化(不定期更新)

    mysql的索引分为 1:主键索引 2:唯一索引 3:聚集索引

网友评论

      本文标题:mysql唯一索引 覆盖索引

      本文链接:https://www.haomeiwen.com/subject/qjhqqltx.html