MySQL中的联合索引
联合索引:也叫复合索引,指对表上的两个或两个以上的列字段进行索引。Mysql从左到右使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c),可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c组合查找
提示:仅仅对联合索引后面的任意列执行搜索时,该索引是不会有任何作用
-- 用户表
CREATE TABLE `user` (`id` int(4) NOT NULL COMMENT '主键ID',`name` varchar(4) NOT NULL COMMENT '姓名',`age` int(3) NOT NULL COMMENT '年龄',PRIMARY KEY (`id`)
)
1.创建索引
如上图所示,我们创建好了用户表,如果我们想在该表的name和age列字段上创建联合索引,可采用下述SQL:
create index index_name_age on user (name,age);
创建联合索引的语法:create index 索引名 on 表名 (字段名1,字段名2,...)
2.删除索引
如果我们觉得所创建的联合索引不适宜,可采用下述SQL删除联合索引:
drop index index_name_age on user;
或者采用:alter table 表名 drop index 索引名
alter table user drop index index_name_age;
3.存在同名索引时会报错
假设已经创建了组合索引(index_name_age),如果再次创建该索引就会报下述错误:
Query : create index index_name_age on user (name,age)
Error Code : 1061
Duplicate key name 'index_name_age'
4.查看索引
查看索引的语法:show index from 表名
SHOW INDEX FROM USER;
常见问题:
问题1:当一个表有多条索引可走时,Mysql会根据查询语句的成本来选择走哪条索引。联合索引的话,它往往计算的是第一个字段(最左边那个),这样往往会走错索引.。如索引 Index_1(Create_Time, Category_ID)、Index_2(Category_ID) ,如果每天的数据都特别多, 而且有很多category, 但具体每个category的记录不会很多。当查询SQL条件为select …where create_time ….and category_id=..时, 很可能不走索引Index_1, 而走索引Index_2, 导致查询比较慢.
解决办法:将索引字段的顺序调换一下
mysql联合索引 - 沧海一滴 - 博客园
Mysql基于成本的优化(一条查询语句是如何选择执行计划的)[文末有问题]_疯狂的蜗牛-CSDN博客
优化:在联合索引中将选择性最高的列放在索引最前面
例如:在一个公司里以age(年龄) 和gender(性别)为索引,显然age要放在前面,因为性别就两种选择男或女,选择性不如age。
MySQL中的联合索引相关推荐
- MySQL中的联合索引学习教程
MySQL中的联合索引学习教程 这篇文章主要介绍了MySQL中的联合索引学习教程,其中谈到了联合索引对排序的优化等知识点,需要的朋友可以参考下 联合索引又叫复合索引.对于复合索引:Mysql从左到右的 ...
- Mysql中的联合索引、前缀索引、覆盖索引
Mysql中的联合索引.前缀索引.覆盖索引 索引 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 联合索引 又名复 ...
- mysql的学习要点_MySQL中的联合索引的学习要点总结
MySQL中的联合索引的学习要点总结 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a ...
- MySQL中B+树索引,聚簇索引,二级索引,辅助索引,回表,索引生效条件
对于MySQL,我们经常说调优有一个手段就是加索引,那么为什么加索引能够优化查询,是不是加了索引查询就快了 ? 在MySQL中,存储的单元并不是按照我们理解的一条一条记录,而是按照页来进行存储的,My ...
- 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- MySQL中的组合索引
MySQL中的组合索引(复合索引) 使用多个字段创建索引,只用在查询条件中使用了创建索引时的第一个字段,索引才会被使用(最左前缀原则): 一.最左前缀原则 最左优先: 例 使用表中的name,addr ...
- mysql中b树索引_Mongo和Mysql中的B树索引
为什么Mysql中Innodb的索引结构采取B+树? 回答这个问题时,给自己留一条后路,不要把B树喷的一文不值.因为网上有些答案是说,B树不适合做文件存储系统的索引结构.如果按照那种答法,自己就给自己 ...
- Mysql中B+Tree索引相关知识点
Mysql中B+Tree索引相关知识点 索引生效及限制 索引的优点 结语 索引有很多种类型,可以为不同的场景提供更好的性能.在Mysql中,索引是在存储引擎层而不是服务器层实现的,所以,并没有统一的索 ...
- mysql中创建唯一索引的关键字_MySQL中创建唯一索引的关键字是_______ 。
[判断题]判断零件键槽的尺寸标注是否正确.[图片] [单选题][图片] [单选题]读零件图,回答问题:1. C3表示倒角为( )度?2. C2表示倒角锥台高度为( )?[图片] [单选题]如图为套筒零 ...
最新文章
- 高精度定位!“天地一体”基础设施助中国北斗在商用领域“弯道超车”
- Java8 Optional 最佳实践
- html5 支持php标签吗,HTML5标签大全
- python爬取图片简记
- SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
- Web完整渗透测试实例(windows)
- dell加装固态硬盘_技术丨如何进行笔记本硬盘拆装?
- 计算几何--二维几何前置基础知识
- 软件开发知识--[ADO.NET Entity Framework]
- [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
- cad道路里程桩号标注_甲级设计院CAD制图技巧与画法讲解! 超实用,值得你收藏~...
- 第1期——WLAN定义和基本架构
- STM32F4+W25Q64实现一个U盘
- 百度步行导航加poi搜索android,Android Studio百度地图路线规划以及POI搜索功能的实现...
- 荟研新材料 毕克BYK024 毕克BYK028 有机硅消泡剂 丙烯酸酯 聚氨酯 水性印刷油墨 罩光清漆 水性UV体系消泡剂
- 铁路专业的未来发展趋势如何
- 获取linkedin上指定公司下的职员信息
- TreeMap的介绍与使用
- matlab自学笔记一(台大郭彦甫)
- 正确理解left join
热门文章
- python虚拟环境解决不能执行脚本的问题
- (九)ubuntu解决resolv.conf被重写问题
- 深度学习的推荐模型(DLRMs):设计孪生掩码层高效学习维度自适应的Embedding...
- 【报告分享】致胜直播带货十大法则.pdf(附下载链接)
- 非线性最小二乘通俗易懂解释
- python安装盒怎么打开_安装MySQL-python报错
- mysql交叉组合查询,MySQL数据透视/交叉表查询
- php删除双引号,PHP引号前添加反斜杠、去除反斜杠的方法
- java图片滚动特效_js图片各种滚动效果
- Keras一些基本概念