联合索引:也叫复合索引,指对表上的两个或两个以上的列字段进行索引。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. 云计算设计模式(二十三)——Throttling节流模式
  2. 脑与神经类开放数据库汇总
  3. npm 安装指定的第三方包
  4. 【Python爬虫】Beautiful Soup库入门
  5. ssm mysql 插入date 数据_SSM中插入数据没有报错,但是数据库没有值?报错-问答-阿里云开发者社区-阿里云...
  6. php 面向对象问题,PHP 面向对象开发的一些问题
  7. 以某种结构遍历添加的基础类
  8. 自动驾驶——多传感器融合的学习笔记
  9. 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字(简单易懂)
  10. 【优化算法】粒子群优化算法简介
  11. 1/4-36UNS-2A的螺纹
  12. 浅谈mian函数的参数解析
  13. 企业网站建设前如何进行网站策划
  14. 网络安全:关于Caesar密码的加密解密
  15. 学习笔记-2-Review of Optimization-3-Quadratic
  16. android 方向传感器
  17. quartus 13.0 之四位全加器(不需要用modelism的歪门邪道)
  18. 网易极客战记-KITHGARD地牢--健忘的宝石匠
  19. 一个屌丝程序员的青春(一九一)
  20. c语言日历设计程序框图,C语言课程设计————写下流程图! 谢谢

热门文章

  1. H5 input type=“search“ 不显示搜索 解决方法
  2. 【报告分享】2021年网生代线上社交行为洞察报告:95后、00后社交江湖大揭秘.pdf(附下载链接)...
  3. 【报告分享】2021全球职场调研中国报告:期待与忐忑,职场人的心声-普华永道.pdf(附下载链接)...
  4. 【报告分享】2020年中国快消品行业KOL内容营销报告.pdf(附下载链接)
  5. android 设置drawable大小,在Android中调整Drawable大小
  6. java图片滚动特效_js图片各种滚动效果
  7. golang 时间戳_go语言学习笔记(13)-defer函数、字符串常用函数和时间日期函数...
  8. cad线性标注命令_CAD的标注命令原来可以这样用,学了十几年,终于知道了
  9. 若依将ehcache改为redis缓存详细整合步骤
  10. Cookie字符串转Map集合方法