联合索引:也叫复合索引,指对表上的两个或两个以上的列字段进行索引。Mysql从左到右使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c),可以支持a | a,ba,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中的联合索引相关推荐

  1. MySQL中的联合索引学习教程

    MySQL中的联合索引学习教程 这篇文章主要介绍了MySQL中的联合索引学习教程,其中谈到了联合索引对排序的优化等知识点,需要的朋友可以参考下 联合索引又叫复合索引.对于复合索引:Mysql从左到右的 ...

  2. Mysql中的联合索引、前缀索引、覆盖索引

    Mysql中的联合索引.前缀索引.覆盖索引 索引 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 联合索引 又名复 ...

  3. mysql的学习要点_MySQL中的联合索引的学习要点总结

    MySQL中的联合索引的学习要点总结 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a ...

  4. MySQL中B+树索引,聚簇索引,二级索引,辅助索引,回表,索引生效条件

    对于MySQL,我们经常说调优有一个手段就是加索引,那么为什么加索引能够优化查询,是不是加了索引查询就快了 ? 在MySQL中,存储的单元并不是按照我们理解的一条一条记录,而是按照页来进行存储的,My ...

  5. 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  6. MySQL中的组合索引

    MySQL中的组合索引(复合索引) 使用多个字段创建索引,只用在查询条件中使用了创建索引时的第一个字段,索引才会被使用(最左前缀原则): 一.最左前缀原则 最左优先: 例 使用表中的name,addr ...

  7. mysql中b树索引_Mongo和Mysql中的B树索引

    为什么Mysql中Innodb的索引结构采取B+树? 回答这个问题时,给自己留一条后路,不要把B树喷的一文不值.因为网上有些答案是说,B树不适合做文件存储系统的索引结构.如果按照那种答法,自己就给自己 ...

  8. Mysql中B+Tree索引相关知识点

    Mysql中B+Tree索引相关知识点 索引生效及限制 索引的优点 结语 索引有很多种类型,可以为不同的场景提供更好的性能.在Mysql中,索引是在存储引擎层而不是服务器层实现的,所以,并没有统一的索 ...

  9. mysql中创建唯一索引的关键字_MySQL中创建唯一索引的关键字是_______ 。

    [判断题]判断零件键槽的尺寸标注是否正确.[图片] [单选题][图片] [单选题]读零件图,回答问题:1. C3表示倒角为( )度?2. C2表示倒角锥台高度为( )?[图片] [单选题]如图为套筒零 ...

最新文章

  1. 高精度定位!“天地一体”基础设施助中国北斗在商用领域“弯道超车”
  2. Java8 Optional 最佳实践
  3. html5 支持php标签吗,HTML5标签大全
  4. python爬取图片简记
  5. SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
  6. Web完整渗透测试实例(windows)
  7. dell加装固态硬盘_技术丨如何进行笔记本硬盘拆装?
  8. 计算几何--二维几何前置基础知识
  9. 软件开发知识--[ADO.NET Entity Framework]
  10. [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
  11. cad道路里程桩号标注_甲级设计院CAD制图技巧与画法讲解! 超实用,值得你收藏~...
  12. 第1期——WLAN定义和基本架构
  13. STM32F4+W25Q64实现一个U盘
  14. 百度步行导航加poi搜索android,Android Studio百度地图路线规划以及POI搜索功能的实现...
  15. 荟研新材料 毕克BYK024 毕克BYK028 有机硅消泡剂 丙烯酸酯 聚氨酯 水性印刷油墨 罩光清漆 水性UV体系消泡剂
  16. 铁路专业的未来发展趋势如何
  17. 获取linkedin上指定公司下的职员信息
  18. TreeMap的介绍与使用
  19. matlab自学笔记一(台大郭彦甫)
  20. 正确理解left join

热门文章

  1. python虚拟环境解决不能执行脚本的问题
  2. (九)ubuntu解决resolv.conf被重写问题
  3. 深度学习的推荐模型(DLRMs):设计孪生掩码层高效学习维度自适应的Embedding...
  4. 【报告分享】致胜直播带货十大法则.pdf(附下载链接)
  5. 非线性最小二乘通俗易懂解释
  6. python安装盒怎么打开_安装MySQL-python报错
  7. mysql交叉组合查询,MySQL数据透视/交叉表查询
  8. php删除双引号,PHP引号前添加反斜杠、去除反斜杠的方法
  9. java图片滚动特效_js图片各种滚动效果
  10. Keras一些基本概念