mysql中怎么实现重复索引与冗余索引
发布时间:2022-02-12 14:57:51 所属栏目:MySql教程 来源:互联网
导读:这篇文章将为大家详细讲解有关mysql中怎么实现重复索引与冗余索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 重复索引:表示一个列或者顺序相同的几个列上建立的多个索引。 冗余索引在一些特殊的
这篇文章将为大家详细讲解有关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中怎么实现重复索引与冗余索引就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。 (编辑:临夏站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐