【Mysql】复合主键的索引

yizhihongxing

复合主键在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数据类型DECIMAL用法

    MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。 要定义数据类型为DECIMAL的列,请使用以下语法: 1 column_name  DECIMAL(P,D); 在上面的语法中: P是表示有效数字数的精度。 P范围为1〜65。 D是表示小数点后的位数。 D的范围…

    MySQL 2023年4月13日
    00
  • 数据库:MySQL(多表的表记录的查询)(三)

    一、外键约束 1、创建外键 — 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 —-主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KEY auto_increment, name VARCHAR (20), age INT , is_marriged boolean — show c…

    MySQL 2023年4月13日
    00
  • 白嫖一个月的ES,完成了与MySQL的联动

    前言 《腾讯云 x Elasticsearch三周年》活动来了。文章写之前的思路是:在腾讯云服务器使用docker搭建ES。但是理想很丰满,显示很骨感,在操作过程中一波三折,最后还是含着泪美滋滋地,白嫖了一个月的腾讯云ES服务。 最后就是利用腾讯云的Elasticsearch和Kibana,和我在腾讯云服务器上搭建MySQL进行了一波联动,完成了数据库内部指…

    2023年4月8日
    00
  • windows7下启动mysql服务出现服务名无效的原因及解决方法

    问题描述: 在 Windows7 下启动 MySQL 服务时,可能会遇到服务名无效的错误,导致无法启动 MySQL 服务,此时需要进行排查和解决。 解决方法: 确认服务名是否正确 1.1 打开“服务”管理器 在 Windows7 的“控制面板”中,可以找到“管理工具”选项,点击进入后找到“服务”管理器。 1.2 查看服务名是否正确 在“服务”管理器中,找到名…

    MySQL 2023年5月18日
    00
  • 解析在MySQL里创建外键时ERROR 1005的解决办法

    当在MySQL中创建外键时,有可能会遇到ERROR 1005的错误提示。这种情况通常是由于外键定义过程中存在语法错误或者其他约束条件不满足引起的。下面详细讲解一下解析在MySQL里创建外键时ERROR 1005的解决办法。 1. 错误原因分析 ERROR 1005通常是由于以下原因导致的: 外键定义过程中语法存在错误; 外键关联的字段类型、大小或字符集不一致…

    MySQL 2023年5月18日
    00
  • mysql数据库中1045错误的解决方法

    当我们连接 MySQL 数据库时,可能会遇到 1045 错误,这是发生在 MySQL 数据库连接方面的常见错误。在大多数情况下,这是由于用户身份验证失败或无法连接到服务器。 下面是解决方法: 确认数据库用户名和密码 首先,检查您连接 MySQL 数据库的用户名和密码是否正确。如果您不确定用户名和密码是否正确,可以从 MySQL 的 root 用户处进行验证。…

    MySQL 2023年5月18日
    00
  • mysql优化小技巧之去除重复项实现方法分析【百万级数据】

    下面是针对“mysql优化小技巧之去除重复项实现方法分析【百万级数据】”这篇文章的详细攻略。本攻略将包含以下内容: 什么是重复项去除 为什么需要重复项去除 重复项去除的实现方法 示例应用 1. 什么是重复项去除 重复项去除是指在数据库中根据特定条件进行筛选,去除数据表中的重复项。一般来说,我们根据主键或唯一索引进行去重操作。例如,我们要查询出一个数据表中不同…

    MySQL 2023年5月19日
    00
  • mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)

    下面是针对“mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)”这个主题的完整攻略: 1. 了解my.cnf/my.ini配置文件 my.cnf/my.ini是MySQL配置文件,存放在MySQL安装目录下的/etc/mysql或者\C:\ProgramData\MySQL\MySQL Server X.X\目录下。通过修改这个文件…

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