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中的RIGHT JOIN和CROSS JOIN操作示例

    MySQL中的RIGHT JOIN和CROSS JOIN操作示例

    本文详细介绍了MySQL中的RIGHT JOIN和CROSS JOIN操作,RIGHT JOIN返回右表中的所有记录及与左表中的记录相匹配的记录,而CROSS JOIN返回两个表中所有可能的组合,通过实际示例和输出结果,我们展示了如何使用RIGHT JOIN和CROSS JOIN进行数据库查询,一起看看吧
    2023-07-07
  • SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)

    SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)

    SQLyog是一款MySQL可视化工具,他可以将部分SQL操作通过图形化界面操作来完成,方便开发者更好的进行开发及数据库设计,这篇文章主要介绍了SQLyog的下载、安装、破解、配置(MySQL可视化工具安装),需要的朋友可以参考下
    2022-09-09
  • Mysql InnoDB删除数据后释放磁盘空间的方法

    Mysql InnoDB删除数据后释放磁盘空间的方法

    这篇文章主要介绍了Mysql InnoDB删除数据后释放磁盘空间的方法,Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长,本文就讲解释放磁盘空间的方法,需要的朋友可以参考下
    2015-04-04
  • MySQL执行SQL文件报错:Unknown collation ‘utf8mb4_0900_ai_ci‘的解决方案

    MySQL执行SQL文件报错:Unknown collation ‘utf8mb4_0900_ai_

    这篇文章主要给大家分享了MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案,如果又遇到相同问题的同学,可以参考阅读本文
    2023-09-09
  • MySQL查询语句大全集锦

    MySQL查询语句大全集锦

    这篇文章主要介绍了MySQL查询语句大全集锦,需要的朋友可以参考下
    2016-06-06
  • MySQL外键设置的方法实例

    MySQL外键设置的方法实例

    这篇文章主要介绍了MySQL外键设置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • mysql 5.7.23 winx64解压版安装教程

    mysql 5.7.23 winx64解压版安装教程

    这篇文章主要为大家详细介绍了mysql 5.7.23 winx64解压版安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySql数据库自动递增值问题

    MySql数据库自动递增值问题

    这篇文章主要介绍了MySql数据库自动递增值问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago.

    解决MySQL报错:The last packet sent successfu

    这篇文章主要介绍了解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 详解MySQL聚合函数

    详解MySQL聚合函数

    在 MySQL 中,聚合函数是用于计算多行数据的统计信息的函数,例如总和、平均值、最大值、最小值和行数等。将多行数据聚合成单个结果,这是聚合函数得名的由来。本文将详细介绍MySQL的聚合函数,感兴趣的小伙伴可以参考一下
    2023-04-04

最新评论