ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MYSQL最左前缀原则

2021-03-05 16:05:46  阅读:153  来源: 互联网

标签:前缀 原则 int DEFAULT 查询 回表 索引 MYSQL NULL


建立联合索引后,数据库会生成一颗B+树,值是主键。

回表:从联合索引表中查询到数据后,在回到主键表查询,避免数据冗余。

 

CREATE TABLE `t1` (
  `id` int NOT NULL,
  `a` int DEFAULT NULL,
  `b` int DEFAULT NULL,
  `c` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index_bc` (`b`,`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

先任意插入12条数据

第一种情况

 

上图中查询表所有字段时,条件c遵循最左前缀原则。在b+中查询类似 *c,所以不使用索引查询,使用全表扫描。

 

 

 

 

 上图中,查询指定字段,并且遵循了最左原则,系统会自动优化。

 

 范围查询时,当查询的行数一旦过多,回表数量一旦增多,则不会使用索引。(系统内部自行判断回表成本和全文扫描查询成本)

 

 索引列不应该作为表达式的一部分,一旦对列改变后,就不能使用索引查询,对磁盘中的数据进行,会增大开销。

 

标签:前缀,原则,int,DEFAULT,查询,回表,索引,MYSQL,NULL
来源: https://www.cnblogs.com/yewook/p/14486694.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有