一、联合索引的使用

本文中联合索引的定义为(MySQL):

ALTER TABLE table_name ADD INDEX (col1,col2,col3);

二、联合索引的本质

当创建(col1,col2,col3)联合索引时,相当于创建了(col)单列索引,(clo1,clo2)联合索引以及(col1,col2,col3)联合索引想要索引生效,只能使用col1和col1,col2和col1,col2,col3三种组合;当然,col1,col3组合也可以,但实际上只用到了col1的索引,col3并没有用到!

三、SQL中联合索引和普通索引区别

区别:

联合索引中列的顺序非常重要,从左原则。a,ab,ba,abc。

单个索引:一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

结论:

一般来说,列表搜索需要多个列查询,此时就可以使用联合索引,都是and的关系。

什么时候需要创建索引:

1、where条件会经常出现的,并且当前表的数量比较大。

2、where条件中是用and而非or的时候。

3、联合索引比单个索引更适合,因为索引占用一定磁盘空间,也就说明有一定的开销,如果多个单个索引比较多,那么多资源的浪费也比较多,联合索引相当于对多个列建索引,并且只建一次,and条件下非常适合。
说明:

  1. MySQL联合索引遵循最左前缀匹配规则,即从联合索引的最左列开始向右匹配,直到遇到匹配终止条件。例如联合索引(col1, col2, col3), where条件为col1=a AND col2=b可命中该联合索引的(col1,col2)前缀部分, where条件为col2=b AND col3=c不符合最左前缀匹配,不能命中该联合索引。

  2. 匹配终止条件为范围操作符(如>, <, between, like等)或函数等不能应用索引的情况。例如联合索引(col1, col2, col3), where条件为col1=a AND col2>1 AND col3=c, 在col2列上为范围查询,匹配即终止,只会匹配到col1,不能匹配到(col1, col2, col3).

  3. where条件中的顺序不影响索引命中。例如联合索引(col1, col2, col3), where条件为col3=c AND col2=b AND col1=a, MySQL优化器会自行进行优化,可命中联合索引(col1, col2, col3).

MySQL数据库联合索引的命中规则相关推荐

  1. mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结

    标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL ...

  2. 徐无忌MySQL笔记:索引的使用规则

    徐无忌MySQL笔记:索引的使用规则 完成:第一遍 1.索引的使用大致分为哪两类? 单列索引 联合索引 2.单列索引? 比如:SELECT uid FROM people WHERE name='Ad ...

  3. 数据库建立索引常用的规则

    数据库建立索引常用的规则如下: 查看全文 http://www.taodudu.cc/news/show-3587136.html 相关文章: hive中如何建立索引 oracle数据库分区表建立索引 ...

  4. MySQL数据库创建索引的方法和好处

    MySQL 索引 数据库创建索引的几种方法 数据库建表添加索引(一) mysql创建索引三种方式 数据库索引的创建和使用 Mysql哪些字段适合建立索引 MySQL索引的创建与使用 MySQL索引是如 ...

  5. PHP面试MySQL数据库的索引

    你好,是我琉忆,PHP程序员面试笔试系列图书的作者. 本周(2019.3.4至3.8)的一三五更新的文章如下: 周一:PHP面试MySQL数据库的基础知识 周三:PHP面试MySQL数据库的索引 周五 ...

  6. mysql之联合索引

    mysql之联合索引测试: 前期准备: 建立联合索引? CREATE TABLE `test` (`id` bigint(16) NOT NULL AUTO_INCREMENT,`aaa` varch ...

  7. mysql建立联合索引_mysql之联合索引

    mysql之联合索引测试: 前期准备: 建立联合索引? CREATE TABLE `test` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `aaa` var ...

  8. mysql联合索引的使用规则

    从一道有趣的题目开始分析: 假设某个表有一个联合索引(c1,c2,c3,c4)以下选项哪些字段使用了该索引: A where c1=x and c2=x and c4>x and c3=x B ...

  9. MySQL数据库之索引的应用

    前面几篇文章详细介绍了MySQL数据库的DML,DDL,DCL,DQL常用操作,本篇文章将介绍MySQL中一块对于开发和维护都比较重要的内容--MySQL索引的应用! 1.索引的作用 (1)如果索引为 ...

最新文章

  1. 各品牌笔记本BIOS设置硬盘为兼容模式(IDE)方法
  2. 实战SSM_O2O商铺_13【商铺注册】View层之初始化页面数据
  3. Linux磁盘分区及文件系统管理之基础概念
  4. rasa聊天机器人_Rasa-X是持续改进聊天机器人的独特方法
  5. 富文本编辑器 CKeditor
  6. linux 检测蓝牙 rssi,蓝牙LE信号强度Linux
  7. DEDE的简略标题标签的使用问题
  8. 造成sql注入的功能点_创建一个SQL注入保护功能
  9. oracle使用表空间语句,oracle表空间语句
  10. 怎样解决python dataframe loc,iloc循环处理速度很慢的问题
  11. config.o:文件无法辨识_HAZOP有哪些局限性,及系统生命周期不同阶段的危险辨识...
  12. 修改 exchange服务器,升级Exchange2010-新服务器更改IP
  13. 不打开Wifi获取Mac地址
  14. linux rhel dns配置,RedHat Linux DNS配置指南
  15. 互联网电影上线,手机电影院移动端就可以看电影
  16. 郭平欣老先生在恢复中
  17. 论坛社区项目——项目总结
  18. SpringBoot-自动配置
  19. Docker快速入门,看这个就够了
  20. STM32从零开始(四)详解GPIO库函数

热门文章

  1. “新制造”怎么新?阿里说要把云计算和人工智能加到其中
  2. 床垫厂要保持创新对于全新能力。首先床垫制造厂Opinio
  3. 华院计算 | 简单的七条小桥引出了复杂的网络科学
  4. 罗马仕充电宝,魅族充电宝,小米充电宝,Geekon移动电源多维度测评
  5. optical flow 光流的常见可视化方法,光流图像生成
  6. 奢侈品销售的艺术:顶级奢侈品品牌的销售圣经
  7. html分号的作用,JavaScript 中的分号(;) – JavaScript 完全手册(2018版)
  8. Redis常见面试题(缓存击穿、穿透、雪崩)
  9. 2022年Redis最新面试题- Redis集群
  10. 我用YOLOv5做情感识别