【Mysql】复合主键的索引

复合主键在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. 使用索引

    【Mysql】复合主键的索引

     

  2. 使用索引

    【Mysql】复合主键的索引

     

  3. 使用索引

    【Mysql】复合主键的索引

     

  4. 不使用索引

    【Mysql】复合主键的索引

     

  5. 不使用索引

    【Mysql】复合主键的索引

     

  6. 使用索引

    【Mysql】复合主键的索引

     

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

原文链接:https://www.cnblogs.com/maerpao/p/17351549.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【Mysql】复合主键的索引 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • 在Linux上优化Mysql运行环境让你对Mysql更多了解

    优化Mysql的缓存 Mysql的查询性能直接受到缓存的影响,因此优化缓存是提高Mysql性能的重要因素。可以在Mysql的配置文件中设置缓存大小等参数,主要有以下几个参数: key_buffer_size = 256M sort_buffer_size = 16M read_buffer_size = 4M read_rnd_buffer_size = 8…

    MySQL 2023年5月19日
    00
  • 三、ADO.Net基础【02】ADO.Net连接MySQL

    1.MySQL连接 准备工作   安装MySQL的.Net驱动mysql-connector-net-***.msi添加到项目的库中。新建项目,添加引用→“扩展”,添加Mysql.Data;如果是直接解压版,然后直接添加对MySql.Data.dll文件的引用;(安装后,每次连接mysql数据 库时都要添加Mysql.Data.dll程序集的引用。) 附:驱…

    MySQL 2023年4月13日
    00
  • mysql 性能的检查和优化方法

    MySQL性能检查和优化方法 MySQL是开源的关系型数据库管理系统,性能的稳定和高效是其具有竞争优势的关键因素。在运行MySQL时,会面临一些性能问题,我们需要检查和优化MySQL以使其更高效地工作。以下是MySQL性能检查和优化的完整攻略。 1. 确定问题 在优化MySQL性能之前,需要先确定问题所在。您可以使用以下方法来确定问题: 监控工具 监控工具可…

    MySQL 2023年5月18日
    00
  • mysql 写入中文乱码

    今天从另一个系统往mysql数据库写入数据,发现中文变成了????? 检查数据库的设置 ,server对应字符集是latinl    调整mysql参数配置,配置文件目录/etc/mysql/mysql.conf.d/ 添加一行:character-set-server = utf8    然后重启mysql服务,再次检查服务器参数配置,重新写入中文已正常。…

    MySQL 2023年4月13日
    00
  • MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

    这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动。可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错。1、其中一个是:Windows无法启动MySQL57服务(位于本地计算机上)错误1067:进程意外终止,报错如下图所示。 2、紧跟着还有一个报错:本地计算机上的MySQL服务启动后停止。某…

    MySQL 2023年4月13日
    00
  • MySQL下PID文件丢失的相关错误的解决方法

    MySQL下PID文件丢失是常见的问题之一,在这里我将为您讲解如何解决这个问题。 什么是PID文件? PID文件是PID(Process ID,进程 ID)文件的缩写。MySQL 服务器通过PID文件进行服务初始化和生命周期管理。PID文件中保存了一个进程的唯一标识符,从而使MySQL服务器能够与其他进程区别开来。当MySQL服务器启动时,它将会在指定位置创…

    MySQL 2023年5月18日
    00
  • mysql锁及锁出现总结

    转载请注明出处: 1.按锁粒度分类: 行锁:锁某行数据,锁粒度最小,并发度高;; 行锁是指加锁的时候锁住的是表的某一行或多行记录,多个事务访问同一张表时,只有被锁住的记录不能访问,其他的记录可正常访问; 行锁是对所有行级别锁的一个统称,比如下面说的记录锁、间隙锁、临键锁都是属于行锁 表锁:锁整张表,锁粒度最大,并发度低; 上锁的时候锁住的是整个表,当下一个事…

    MySQL 2023年4月13日
    00
  • MySQL查看触发器方法详解

    要查看MySQL中的触发器,可以使用以下命令: SHOW TRIGGERS [FROM database_name] [LIKE 'pattern']; 其中,database_name 为要查看的数据库名称(可选),pattern 为要匹配的触发器名称(可选)。 此外,也可以使用以下命令查看指定触发器的详细信息: SHOW CREATE…

    MySQL 2023年3月10日
    00
合作推广
合作推广
分享本页
返回顶部