索引
一、简介
利用索引中的附加列,可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。
联合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏进行排序,然后按名字对有相同姓氏的人进行排序。如果您知道姓,电话簿将非常有用,如果您知道姓和名,电话簿则更为有用,但如果您只知道名不知道姓,电话簿将没有用处。
所以说创建联合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,联合索引非常有用;仅对后面的任意列执行搜索时,联合索引则没有用处。
二、单列索引
多个单列索引在多条件查询时优化器会优先选择最优索引策略,可能只用一个索引,也可能将多个索引全用上。但多个单列索引底层会创建多个B+索引树,比较占用空间,也会浪费一定搜索效率,故如果只有多条件联合查询时最好建联合索引。
三、最左前缀原则
顾名思义是最左优先,以最左边的为起点任何连续的索引都能匹配上,如果第一个字段是范围查询需要单独建一个索引,在创建联合索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。这样的话扩展性比较好,比如username经常需要作为查询条件,而age不常使用,则需要把username放在联合索引的第一位置,即最左边。
1、创建复合索引
ALTER
MySQL索引详解:单列与联合索引及最左前缀原则
本文详细讲解了MySQL数据库中的单列索引和联合索引,强调了最左前缀原则的重要性。创建联合索引时,应根据业务需求将最常用列放在最左边。同时,当存在联合索引和单列索引时,MySQL会选择最优索引策略。还探讨了索引失效的情况,如like查询、or语句和数据类型转换。此外,文章还涵盖了InnoDB和MyISAM存储引擎的区别以及B+ Tree索引的工作原理。
订阅专栏 解锁全文
4362

被折叠的 条评论
为什么被折叠?



