mysql重复索引与冗余索引实例分析
作者:webbc 时间:2024-01-25 11:52:53
本文实例讲述了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数据库计有所帮助。
来源:https://blog.csdn.net/baochao95/article/details/62439908
标签:mysql,重复索引,冗余索引
0
投稿
猜你喜欢
ASP防止图片木马上传的代码
2011-02-05 11:08:00
Python异常模块traceback用法实例分析
2022-07-22 15:47:14
SQLite之Autoincrement关键字(自动递增)
2024-01-13 20:16:29
numpy矩阵数值太多不能全部显示的解决
2023-09-09 13:55:41
MySQL无法输入中文字符问题的解决办法
2024-01-22 08:26:56
JavaScript 各种动画渐变效果
2008-09-02 10:38:00
opencv python在视屏上截图功能的实现
2021-04-14 04:00:30
一键生成各种尺寸Icon的php脚本(实例)
2024-06-05 09:48:41
python初学定义函数
2021-07-02 03:37:07
Python使用pickle模块存储数据报错解决示例代码
2023-12-10 02:05:05
Mac下PyCharm快捷键分享
2023-05-31 07:54:38
浅析MySQL - MVCC
2024-01-24 14:29:22
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2022-07-30 00:41:42
javascript实现tab响应式切换特效
2024-02-25 00:13:12
Date对象格式化方法
2009-11-16 13:17:00
用python对oracle进行简单性能测试
2021-07-08 16:51:59
如何才能有效对抗MySQL数据库的解密高手
2009-05-22 18:21:00
Python脚本处理空格的方法
2021-03-12 09:45:33
如何控制Go编码JSON数据时的行为(问题及解决方案)
2024-05-22 17:47:47
keras 解决加载lstm+crf模型出错的问题
2022-06-11 01:27:27