【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日

相关文章

  • MySQL的循环语句使用总结

    REPEAT-UNTIL循环   [loopname]:REPEAT       commands;   UNTIL condition   END REPEAT [loopname];   在这种循环里,关键字repeat和until之间的语句将一直循环执行到给定条件第一次得到满足为止,因为对条件表达式的求值发生在每次循环的末尾,所以整个循环语句至少会执行…

    MySQL 2023年4月13日
    00
  • MySQL中增删改查操作与常见陷阱详解

    MySQL中的增删改查操作 MySQL是一个流行的关系型数据库管理系统。它可以支持以下基本的数据操作:增加(insert)、删除(delete)、修改(update)、查询(select)。 1.1. 增加数据 在MySQL中,可以通过INSERT语句向表格中插入新数据。语法如下: INSERT INTO table_name (col1, col2, co…

    MySQL 2023年5月19日
    00
  • Mysql数据库的QPS和TPS的意义和计算方法

    MySQL数据库的QPS和TPS是数据库性能评估的两个重要指标,QPS代表每秒查询率,而TPS代表每秒事务处理率。 QPS的计算公式为:Query数/时间,例如,如果在1秒钟内执行了1000次查询,则QPS为1000。QPS可以用来评估系统的查询性能。 TPS的计算方法有三种,分别是Commit、Rollback以及Insert+Update+Delete。…

    MySQL 2023年5月19日
    00
  • qrtz表初始化脚本_mysql

    DROP TABLE IF EXISTS qrtz_blob_triggers; DROP TABLE IF EXISTS qrtz_calendars; DROP TABLE IF EXISTS qrtz_cron_triggers; DROP TABLE IF EXISTS qrtz_fired_triggers; DROP TABLE IF EXIST…

    MySQL 2023年4月17日
    00
  • MySQL ERROR 2013 (HY000)错误解决方法

    MySQL ERROR 2013 (HY000)错误是因为连接MySQL服务器超时导致的,可能由于网络问题、MySQL服务器负载过高或者MySQL配置不当等原因引起。这种错误通常会在进行大量数据处理或负载较高的时间段内出现。 为了解决这个问题,可以尝试以下几种方法: 方法一:增加MySQL服务超时时间 MySQL默认超时时间较短,可以通过修改MySQL配置文…

    MySQL 2023年5月18日
    00
  • 不同于Oracle:MySQL的insert会阻塞update

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者: 王庆勋 文章来源:GreatSQL社区原创 某银行客户在从Oracle迁移到MySQL的开发中,MySQL在READ-COMMITTED隔离级别下,出现了insert阻塞update的情况,但同样的情况下…

    MySQL 2023年4月18日
    00
  • MySQL8.0.21安装步骤及出现问题解决方案

    MySQL8.0.21安装步骤及出现问题解决方案 MySQL是一种开源的关系型数据库管理系统,常用于构建Web应用程序。本篇文章介绍了MySQL8.0.21的安装步骤及出现问题的解决方案,希望对大家有所帮助。 1. 下载MySQL 首先,需要从MySQL官网(https://www.mysql.com/)下载MySQL8.0.21的安装包。在下载页面上,选择…

    MySQL 2023年5月18日
    00
  • 解决MySQL8.0安装第一次登陆修改密码时出现的问题

    针对MySQL 8.0安装第一次登录修改密码时出现的问题,我为您提供以下完整攻略: 问题描述 在MySQL 8.0进行第一次登录并修改密码时,可能会出现因密码安全等级问题而不能更新密码的情况。具体的错误信息为:Your password does not satisfy the current policy requirements。 解决方案 1. 临时修…

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