联合索引,最左匹配,范围查询

这篇具有很好参考价值的文章主要介绍了联合索引,最左匹配,范围查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义

联合索引是MySQL中常用的索引类型之一,它是由多个列组合而成的索引。联合索引可以帮助优化查询,提高查询效率,尤其是在多个列同时参与查询时。

最左匹配是指在联合索引中,如果查询条件中只涉及到联合索引中的最左侧列,那么可以利用该联合索引进行快速匹配。如果查询条件中还涉及到联合索引中的其他列,那么查询优化器可能无法充分利用联合索引,从而导致性能下降。

范围查询是指查询条件中涉及到了比较运算符(>, <, >=, <=, BETWEEN, IN等),这类查询条件无法使用“=”运算符进行匹配,需要进行范围匹配。最左匹配原则遇到范围查询就停止匹配。

例:

id | name | age | address

现在要在该表上建立一个联合索引,由name和age组成,即:

CREATE INDEX idx_name_age ON t (name, age);

设有两个查询:

  1. SELECT id FROM t WHERE id > 5 AND age>25;
  2. SELECT id FROM t WHERE age>25;
  3. SELECT id FROM t WHERE id = 5 AND age>25;

查询一,可以使用联合索引进行最左匹配。查询优化器可以利用联合索引进行快速匹配,定位到符合条件的数据行。

查询二,不可以匹配;虽然也涉及到了联合索引的一部分age,但是查询条件中没有涉及到联合索引的最左侧列id,因此无法进行最左匹配。在这种情况下,查询优化器可能会选择全表扫描或者使用其他索引进行查询,从而导致性能下降。

查询三,不可以匹配;最左匹配原则遇到范围查询就停止匹配。

Q:SELECT id FROM t WHERE age>25 AND id > 5 ; 是否可以匹配索引?

能;Mysql有优化器会自动调整顺序与索引顺序一致。

Q: 对下面的查询如何建立查询?

SELECT * FROM table 
WHERE a = 1 and b = 2 and c = 3; 

重点要的是将区分度高的字段放在前面,区分度低的字段放后面。像性别、状态这种字段区分度就很低,我们一般放后面。

例如假设区分度由大到小为b,a,c。那么我们就对(b,a,c)建立索引。在执行sql的时候,优化器会帮我们调整wherea,b,c的顺序,让我们用上索引。

REF:(28条消息) mysql 联合索引_TanaStudy的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-406099.html

到了这里,关于联合索引,最左匹配,范围查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL索引3——Explain关键字和索引使用规则(SQL提示、索引失效、最左前缀法则)

    目录 Explain 索引性能分析 Id ——select的查询序列号 Select_type——select查询的类型 Table——表名称 Type——select的连接类型 Possible_key ——显示可能应用在这张表的索引 Key——实际用到的索引 Key_len——实际索引使用到的字节数 Ref    ——索引命中的列或常量 Rows——预

    2024年02月14日
    浏览(34)
  • 【随手记】聚簇索引、二级索引和联合索引

    聚簇索引(Clustered Index) : 特点 :聚簇索引是表中数据行的物理排序方式,每张表只能有一个聚簇索引。通常,聚簇索引与主键相关联,但如果没有显式定义主键,则InnoDB存储引擎会选择一个唯一非空列作为聚簇索引。 联系 :聚簇索引实际上是表的主要排序顺序,因为它

    2024年02月06日
    浏览(28)
  • mysql联合索引和普通索引的区别

            MySQL中,联合索引和普通索引都是用于加速查询的索引类型。它们之间的区别在于索引的列数和列的顺序。         普通索引只对单个列进行索引,而联合索引则同时对多个列进行索引,这些列可以按照特定的顺序组合在一起。例如,可以为表中的两个列(列

    2024年02月16日
    浏览(28)
  • mysql中主键索引和联合索引的原理解析

    主键索引 :按照主键数据从小到大按照从左到右进行排序,叶节点只存储数据区; 接着将上面的页生成出来,页只存储索引和指针,指针指向数据域,当通过主键查找数据时,从B+树的头部开始寻址数据、读取数据。 上面为索引页 下面为数据页 查询select * from table where a=6,

    2024年04月08日
    浏览(31)
  • mysql联合索引详解

    比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 b+tree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k,每个索引会分配在页上的数量是由字段的大小决定。当字段值的长

    2024年02月14日
    浏览(26)
  • 华为OD-按索引范围翻转文章片段

    输入一个英文文章片段 翻转指定区域的单词顺序 标点符号和普通字母一样处理 例如输入字符串 I am a developer. [0,3] 则输出 developer. a am I 使⽤换⾏隔开三个参数 第⼀个参数为英⽂⽂章内容即英⽂字符串 第⼆个参数为翻转起始单词下标(下标从0开始) 第三个参数为结束 单词下

    2024年02月11日
    浏览(29)
  • 【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

    目录 0. 简介 1. 主键 2. 唯一索引 3. 联合索引 4. 索引对数据库操作的影响 5. 其他索引 5.1 普通索引 5.2 全文索引 5.3 前缀索引 6. 总结 7. 参考资料 索引是一类特殊的 文件 ,用来存储检索信息,使数据库查找更加快速。 主键是一类特殊的唯一索引,选择某一列元素作为主键,用

    2024年02月09日
    浏览(36)
  • 【跳槽面试】谈谈联合索引生效和失效的条件

    这道题考查索引生效条件、失效条件。像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了。 能大概考察应聘者对写的程序是有注重做优化,提高代码质量和程序性能呢 还是只简单的CV了事。 联合索引又

    2024年01月20日
    浏览(31)
  • MATLAB与ROS联合仿真(慕羽☆)全套开源资料索引

       自2021年9月份开始进行MATLAB与ROS联合仿真相关的研究,至2021年12月份研究基本上结束,至今,已经近两年时间,期间曾收到过很多小伙伴的私信,想让我出点教程,期间我也曾多次想要抽点时间出教程,但很遗憾,总会被各种各样的事情顶掉,一拖再拖,就到了现在。

    2024年02月15日
    浏览(48)
  • 删除维护计划时报错:索引超出范围必 须为⾮负值并⼩于集合⼤⼩

    问题:删除维护计划时报错:索引超出范围必 须为⾮负值并⼩于集合⼤⼩ 在SQL Server 2016上删除已运行维护计划后,维护计划job没有自动删除掉,手工再删除维护计划job,提示删除失败。 错误现象:delete  语句与 reference 约束\\\"FK_subplan_job_id\\\"冲突。该冲突发生于数据库\\\"msdb\\\",表

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包