mysql重复索引与冗余索引实例分析

 更新时间:2019年07月11日 11:37:08   作者:webbc  
这篇文章主要介绍了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相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总

希望本文所述对大家MySQL数据库计有所帮助。

相关文章

  • MySQL中增删改查操作与常见陷阱详解

    MySQL中增删改查操作与常见陷阱详解

    这篇文章详细讲解了MySQL的增删改查的语句、语义和一些我们经常在开发工作中暴露的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-11-11
  • 如何查看MySQL连接的root密码

    如何查看MySQL连接的root密码

    前几天在用Navicat去连本地的MySQL的时候发现我已经忘了密码了,试了网上很多方式都不行…后来发现其实可以自己直接去看当初设置的密码,下面将方法总结出来分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Mysql命令大全(详细篇)

    Mysql命令大全(详细篇)

    这篇文章主要介绍了Mysql命令大全,这里整理的算是比较详细的,需要的朋友可以参考下
    2015-11-11
  • CenOS6.7下mysql 8.0.22 安装配置方法图文教程

    CenOS6.7下mysql 8.0.22 安装配置方法图文教程

    这篇文章主要为大家详细介绍了CenOS6.7下mysql 8.0.22 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 详解MySQL 用户权限管理

    详解MySQL 用户权限管理

    这篇文章主要介绍了MySQL 用户权限管理的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-04-04
  • Mysql 5.7.19 免安装版配置方法教程详解(64位)

    Mysql 5.7.19 免安装版配置方法教程详解(64位)

    这篇文章主要介绍了Mysql 5.7.19 免安装版配置方法教程详解,需要的朋友可以参考下
    2017-08-08
  • Mysql语法、特殊符号及正则表达式的使用详解

    Mysql语法、特殊符号及正则表达式的使用详解

    这篇文章主要介绍了Mysql语法、特殊符号及正则表达式的使用详解,文中包括mysql常用显示命令,索引使用规则等知识点,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • 一文简单了解MySQL前缀索引

    一文简单了解MySQL前缀索引

    MySQL是支持前缀索引的,也就是说你可以定义字符串的一部分作为索引,下面这篇文章主要给大家介绍了关于MySQL前缀索引的相关资料,需要的朋友可以参考下
    2022-04-04
  • MySQL 用 limit 为什么会影响性能

    MySQL 用 limit 为什么会影响性能

    对于小的偏移量,直接使用limit来查询没有什么问题,但随着数据量的增大,越往后分页,limit语句的偏移量就会越大,速度也会明显变慢,接下来文章就向大家介绍其的原由,感兴趣的小伙伴可参考下面文章具体内容
    2021-09-09
  • MySQL 使用DQL命令查询数据的实现方法

    MySQL 使用DQL命令查询数据的实现方法

    这篇文章主要介绍了MySQL 使用DQL命令查询数据的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论