`
heatpress
  • 浏览: 9143 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

mysql联合索引详解

阅读更多
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
 
两个或更多个列上的索引被称作复合索引。
利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。
所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。
如:建立 姓名、年龄、性别的复合索引。
 
create table test(
a int,
b int,
c int,
KEY a(a,b,c)
);
 
优: select * from test where a=10 and b>50
差: select * from test where a50
 
优: select * from test order by a
差: select * from test order by b
差: select * from test order by c
 
优: select * from test where a=10 order by a
优: select * from test where a=10 order by b
差: select * from test where a=10 order by c
 
优: select * from test where a>10 order by a
差: select * from test where a>10 order by b
差: select * from test where a>10 order by c
 
优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b=10 order by b
优: select * from test where a=10 and b=10 order by c
 
优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b>10 order by b
差: select * from test where a=10 and b>10 order by c
 
索引原则
 
1.索引越少越好
原因:主要在修改数据时,第个索引都要进行更新,降低写速度。
2.最窄的字段放在键的左边
3.避免file sort排序,临时表和表扫描.
分享到:
评论

相关推荐

    MySQL-数据库-索引详解

    MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。 索引的概念 ---------------- 索引是表中数据的目录。如果使用索引,则扫描...

    mysql数据库以及索引详解.pptx

    ### MySQL数据库及索引详解 #### 一、MySQL简介与数据库发展 MySQL是一款非常流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发。它以其高性能、稳定性和易用性著称,广泛应用于Web应用程序和企业级系统中...

    mysql索引数据结构详解

    3. 查询遵循必须按照索引顺序的规则:从最左边开始例如(bill,30) (bill 30 dev)可以,但是 30 dev 不行(联合索引的优先级左边的大于右边的,相等时才会调用下一个优先级的索引排序)。 索引的类型 MySQL ...

    MySQL组合索引与最左匹配原则详解

    之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,最近面试时和面试官交流,发现遗漏了些东西,这里自己整理一下这方面的内容。 什么时候创建组合索引? 当我们的where查询存在多个...

    mysql中or是否走索引详解

    在MySQL数据库中,索引是提高查询性能的关键工具。它们允许数据库系统快速定位和检索数据,而无需遍历整个表。然而,当涉及到`OR`条件时,索引的使用和效率可能会变得复杂。本篇文章将深入探讨在MySQL中`OR`操作符...

    mysql 索引与执行计划

    ### MySQL 索引与执行计划 #### 一、索引与执行计划 ##### 1.1 索引入门 在深入探讨之前,我们首先需要理解什么是索引以及其重要性。 ###### 1.1.1 索引是什么 索引(Index)在MySQL中是一种帮助数据库高效获取...

    面试mysql 之索引 锁 事物

    - 联合索引遵循最左前缀原则:查询时优先使用联合索引中最左边的列进行匹配,从而提高查询效率。 #### 三、事务 **事务的概念与ACID特性:** 事务是一组操作的集合,这些操作作为一个整体被提交或回滚。事务具有...

    MySQL索引_021

    【MySQL索引详解】 在MySQL数据库管理中,索引是一种高效的数据检索机制,极大地提高了查询速度。本篇文章将深入探讨MySQL的索引机制,特别是基于InnoDB存储引擎的索引特性。 1. **B+树索引** - **每个索引对应一...

    mysql 索引详细介绍

    - 最左前缀索引:在多列索引中,查询时遵循从左到右的原则,如`userId`和`date`上的联合索引,仅`userId`或`userId`和`date`一起使用时能触发索引。 - 列前缀匹配:对索引列的部分内容进行匹配,如`order_sn LIKE ...

    Mysql面试题详解MySQL常见面试题汇总(建议收藏!!!)

    14. 联合索引的定义:联合索引是指多个列组成的索引,可以提高查询速度。 15. 创建索引是否被使用到了?:可以通过 explain 语句来查看索引是否被使用到了。 二、事务相关 1. 事务的定义:事务是指一个数据库操作...

    mysql索引失效.docx MySQL索引失效是指在查询执行过程中,数据库无法有效地使用索引来提高查询性能

    ### MySQL索引失效详解 #### 一、引言 在日常工作中,SQL是不可或缺的技术工具之一,但在实际操作中,不少开发人员对于SQL优化及索引的理解并不深入。特别是当数据量逐渐增大时,索引的正确使用与否直接影响着系统...

    MySQL索引与Index Condition Pushdown

    当使用联合索引时,MySQL会按照索引定义的顺序来查找数据,例如,对于索引`(col1, col2, col3)`: - 查询`WHERE col1 = ?`时,可以使用该索引。 - 查询`WHERE col1 = ? AND col2 = ?`时,同样可以使用。 - 但是,...

    Mysql面试过关!(详解:索引+常用引擎+常见问题+sql调优)

    ### MySQL索引详解 #### 一、MySQL索引概述 索引在数据库中扮演着至关重要的角色,它能够显著提高数据检索的速度。简单来说,索引就像图书的目录一样,帮助用户快速定位所需数据的位置。当数据库表中的数据量增大...

    Mysql之组合索引方法详解

    如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。例如:  假设存在组合索引(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select...

    mysql优化方法详解

    1、选择最合适的字段属性 2、尽量把字段设置为NOT NULL 3、使用连接(JOIN)来代替子查询(Sub-Queries) 4、使用联合(UNION)来代替手动创建的临时表 5、事务 6、使用外键 7、锁定表 8、使用索引 9、优化sql的查询语句

    详解MySQL索引原理以及优化

    例如,对于`status`、`operator_id`和`operate_time`的联合索引,如果查询条件只涉及到`status`和`operator_id`,索引依然可用,但如果只涉及`operator_id`,则无法利用该索引。 索引优化不仅包括选择正确的索引...

    MySQL详解视频.zip

    o联合索引 Hash索引 Full Text索引 为什么MySql用B+树,不用其他平衡二叉树和B树? 物理存储角度 聚集索引 非聚集索引 逻辑角度 主键索引 唯一索引 单列索引 多列索引 索引使用角度 覆盖...

    MySQL的底层原理

    ### MySQL的底层原理详解 #### 一、B+树结构 **B+树特性:** 1. **叶子节点带有指针:** 在B+树结构中,所有的叶子节点都通过指针相互连接起来,形成了一个有序链表。这种方式极大地提高了范围查询的性能,因为...

    MySQL常用语句指令和功能详解.rar

    以上只是MySQL众多特性和功能的一部分,实际应用中还有更多复杂和高级的概念,如视图的更新、联合查询、子查询、窗口函数等。通过深入学习和实践,您可以更熟练地掌握MySQL,满足各种数据库管理需求。在“MySQL常用...

Global site tag (gtag.js) - Google Analytics