复合主键在where中使用查询的时候到底走不走索引呢?例如下表:

create table index_test
(
a int not null,
b int not null,
c int not null,
d int null,
primary key (a, b, c)
);

当执行以下SQL的时候到底走不走索引呢?

  1. SELECT * FROM index_test WHERE a = 1;
  2. SELECT * FROM index_test WHERE a = 1 AND b = 1;
  3. SELECT * FROM index_test WHERE a = 1 AND b = 1 AND c = 1;
  4. SELECT * FROM index_test WHERE b = 1;
  5. SELECT * FROM index_test WHERE b = 1 AND c = 1;
  6. SELECT * FROM index_test WHERE a = 1 AND c = 1;

Explain结果:

  1. 使用索引

  2. 使用索引

  3. 使用索引

  4. 不使用索引

  5. 不使用索引

  6. 使用索引

结论:Mysql复合主键的顺序十分重要,WHERE查询条件中会按列匹配复合主键,匹配上则使用索引直到匹配不上为止。例如上表,WHERE条件中有a则使用a的索引,有a,b则使用a,b的索引;如果没有a,只有b或c,则不走索引;有a,中间无b,有c则只使用a的索引。

【Mysql】复合主键的索引的更多相关文章

  1. mysql,主键与索引的区别和联系

    关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成 ...

  2. MySQL复合主键下ON DUPLICATE KEY UPDATE语句失效问题

    问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: 1 2 3 4 5 6 7 +-------+----------+------+-----+ ...

  3. Mysql中主键与索引

    摘自: https://www.cnblogs.com/wicub/p/5898286.html 一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没 ...

  4. MySQL添加主键、索引

    查看索引  SHOW INDEX FROM  数据库表名 比如:SHOW INDEX FROM order_info; 添加索引 alter table 数据库add index 索引名称(数据库字段 ...

  5. 【数据库】Mysql中主键的几种表设计组合的实际应用效果

    写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了 ...

  6. MySQL主键和索引的联系及区别

    转载自:http://www.nowamagic.net/librarys/veda/detail/1954 关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识 ...

  7. MySQL主键与索引的区别和联系

    MySQL主键与索引的区别和联系   关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(Inn ...

  8. Mysql 多列形成主键(复合主键 )

    什么是数据表的复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成 比如 create table test (    name varchar(19),    id number,    ...

  9. 【hibernate/JPA】对实体类的的多个字段建立唯一索引,达到复合主键的效果【spring boot】注解创建唯一索引和普通索引

    对实体类的的多个字段建立唯一索引,达到复合主键的效果 package com.sxd.swapping.domain; import lombok.Getter; import lombok.Sett ...

  10. MSSQL - 逻辑主键、业务主键和复合主键

    转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论 ...

随机推荐

  1. 注册中心 —— SpringCloud Netflix Eureka

    Eureka 简介 Eureka 是一个基于 REST 的服务发现组件,SpringCloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 SpringCloud 的服务 ...

  2. Cpp 值的种类划分

    本博文会介绍移动语义的形式术语和规则.并且会正式的介绍值的类别,如 lvalue.rvalue.prvalue和 xvalue,并讨论了在绑定对象引用时的作用.也会讨论移动语义不会自动传递的细节,以及 ...

  3. vue 状态管理 四、Action用法

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  4. vue-li3结合vantUI框架实现国际化语言切换

    vue-cli3结合vantUI框架实现国际化语言切换 https://blog.csdn.net/weixin_45045199/article/details/105838517?utm_medi ...

  5. P1725-DP【绿】

    这道题最开始我用记搜写的,然后WA了一些点,后来看了半天才发现是数组开小了,原来他给了两个数据范围,一个是60%数据的数据范围,另一个是100%数据的数据范围.我没仔细看,没看见后面那行,把60%数据 ...

  6. Contest3376 - 2024寒假集训-排位赛竞赛(一)

    A: 幂位和 高精度. 用高精度加法或乘法算出\(2^{1000}\),再将各位累加即为答案. #include <bits/stdc++.h> using namespace std; ...

  7. java进阶(16)--System常用方法总结

    一.Systen.out静态变量 静态变量,用的最多的是调用print方法   二.System.out.println() println()其实是printStream类的方法   三.Sytem ...

  8. Elasticsearch 索引与文档的常用操作总结二:复杂条件查询

    本文为博主原创,未经允许不得转载: 1.  查询所有:match_all GET /es_db/_doc/_search { "query":{ "match_all&q ...

  9. AI正在改变人类社会 - 内容行业的衰落

    现在的 AI 技术,每天都在进化.我有一种感觉,普通人大概没意识到,它马上就要改变人类社会了. 历史上,这种事一再发生.在你不知不觉中,某些大事件悄悄酝酿,突然就冲击到了你的生活,将你的人生全部打乱, ...

  10. 问题--链表指针传参,修改next指针只传值

    1.问题--链表指针传参,修改next指针只传值 Link_creat_head(&head, p_new);//将新节点加入链表 在这当中head头指针传的是地址,而p_new传的是值,这二 ...