mysql重复索引与冗余索引实例分析
2019-07-11 11:37
1471 查看
本文实例讲述了mysql重复索引与冗余索引。分享给大家供大家参考,具体如下:
重复索引:表示一个列或者顺序相同的几个列上建立的多个索引。
冗余索引:两个索引所覆盖的列重叠
冗余索引在一些特殊的场景下使用到了索引覆盖,所以比较快。
场景
比如文章与标签表
+――+――-+――+
| id | artid | tag |
+――+――-+――+
| 1 | 1 | PHP |
| 2 | 1 | Linux |
| 3 | 2 | MySQl |
| 4 | 2 | Oracle |
+――+――-+――+
在实际使用中, 有2种查询
- artid―查询文章的―tag
- tag―查询文章的 ―artid
SQL语句:
select tag from t11 where artid=2; select artid from t11 where tag='PHP';
我们可以建立冗余索引,来达到索引覆盖的情况,这样的查询效率会比较高。
1、建立一个文章标签表
这个表中有两个索引,一个是at,一个是ta,两个索引都用到了artid和tag两个字段。
CREATE TABLE `t16` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `artid` int(10) unsigned NOT NULL DEFAULT '0', `tag` char(20) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `at` (`artid`,`tag`), KEY `ta` (`tag`,`artid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
2、测试两条SQL语句
select artid from t11 where tag='PHP';
这条语句的查询分析中的Extra有Using index,表示此处用到了索引覆盖,使用索引覆盖后就不需要回行查询数据,这样的查询效率比较高。
select tag from t11 where artid = 1;
这条语句的查询分析中的Extra有Using index,表示此处用到了索引覆盖,使用索引覆盖后就不需要回行查询数据,这样的查询效率比较高。
关于索引覆盖的详细内容可以查看前面一篇文章:索引覆盖
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- mysql-冗余和重复索引
- mysql重复索引、冗余索引、未使用索引的定义和查找
- MySQL索引用法实例分析
- mysql工具pt-duplicate-key-checker检查重复和冗余索引
- mysql优化----大数据下的分页,延迟关联,索引与排序的关系,重复索引与冗余索引,索引碎片与维护
- MySQL索引用法实例分析
- MySQL联合索引功能与用法实例分析
- 高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
- mysql建立高效的索引实例分析
- MySQL 冗余和重复索引 推荐
- 高性能的MySQL(5)索引策略一压缩,冗余,重复,索引和锁
- MySQL索引用法实例分析
- 真是环境下阿里云RDS实例mysql性能优化-慢查询分析、优化索引和配置
- 网络基本功(二十五):Wireshark抓包实例分析TCP重复ACK与乱序
- 通过实例认识MySQL中前缀索引的用法
- MySQL单表多索引上分组操作的执行计划分析
- Mysql索引会失效的几种情况分析
- MySQL死锁问题分析及解决方法实例详解
- mysql 索引分类以及用途分析
- mysql性能优化-慢查询分析、优化索引和配置