首页 > 数据库 >【Mysql】复合主键的索引

【Mysql】复合主键的索引

时间:2023-04-25 15:11:37浏览次数:39  
标签:index 索引 Mysql test WHERE 主键 SELECT

复合主键在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的索引。

标签:index,索引,Mysql,test,WHERE,主键,SELECT
From: https://www.cnblogs.com/maerpao/p/17351549.html

相关文章

  • mysql命令
     DB哥MySQL高级教程-系统学习MySQL共149课时关注微信公众号免费学:DB哥文末有MySQL高级课程目录1.基础命令默认端口号:3306查看服务器版本:selectversion();或者cmd命令mysql-verison登录数据库:mysql-uroot-p退出数据库:exit/quit查看当前系统下的数据库:showdataba......
  • MySQL数据库
     DB哥MySQL高级教程-系统学习MySQL共149课时加我微信公众号免费学:DB哥文末有MySQL高级课程目录一、MySQL数据库数据库,又称为数据管理系统,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的资料运行新增、查询、更新、删除等操作。关系型数据库,存储的格式可以直......
  • 关于ABAP索引
    1、什么是索引如果把数据库表看做一本书,索引就可以看做书的检索目录。目录中包含书中的大小标题(部分字段数据),并且有对应的数据表条目的页码(指针),可以快速的访问数据库表中对应行的所有字段内容一个表中包含一个主索引和多个二级索引主索引:是系统根据表关键字自动创建的,用户不需要创......
  • mysql 创建一个表,并创建存储过程,插入测试数据
    CREATETABLE`test_table`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(45)DEFAULTNULL,`age`int(11)DEFAULTNULL,`address`varchar(45)DEFAULTNULL,`score`int(3)DEFAULTNULL,`class`varchar(20)DEFAULTNULL,PRIMARYKEY(`i......
  • mysql记录耗时的sql
    author:skatetime:2012/02/17mysql记录耗时的sqlmysql可以把耗时的sql或未使用索引的sql都记录在slowlog里,供优化分析使用。1.mysql慢查询日志启用:mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?mysql......
  • 这可能是最全面的MySQL面试八股文了
    什么是MySQLMySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。数据库的三大范式第一范式1NF确保数据库表字段......
  • Linux(CentOS7)安装与卸载MySQL8.0图文详解
    Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的难题,而且很多时候按照教程也没有能够安装成功,安装过程出现各种各样的错误。下面......
  • edge如何设置搜索栏默认搜索引擎
    首先,找到“隐私、搜索和服务”下的“地址栏和搜索”: 点击“地址栏中使用的搜索引擎”右侧的多选框选择引擎: ......
  • Centos7配置Mysql8主从复制同步数据
    1.首先需要在三台不同主机安装好mysql8,参考:https://www.cnblogs.com/haoxuanchen2014/p/17351034.html主库ip:192.168.2.66从库1ip:192.168.2.67从库2ip:192.168.2.682.配置主库第一步:添加配置文件/etc/my.cnf加多下面两句代码如下(示例):[mysqld]server-id=101 #[必......
  • 数据库连接池 - Pymysql
    最近想用小程序来做个移动BI,然后涉及后端接口部分打算用Python的flask框架整一波,主要听闻它比较轻量,简单和可灵活配置,这就和我很对味.毕竟我主要搞数据用的就是sql而已,只要有个服务器提供接口就行.真正开始来写接口的时候,就遇到这个数据库的问题,关于查询效......