什么是索引的最左前缀法则
正文
最左前缀法则:如果索引有多列,如:联合索引,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列,否则将用不到索引。
EXPLAIN SELECT * FROM employees WHERE age = 22 AND position ='manager'。
EXPLAIN SELECT * FROM employees WHERE position = 'manager'。
EXPLAIN SELECT * FROM employees WHERE name = 'LiLei'。
1.1 最左前缀法则
上面我们将表name, age , position 三个字段组成的联合索引,下面使用如下sql进行查询
思考,上面的那三个sql语句,那个能能使用索引,哪些不能?为什么?
1.2 分析
通过explain关键字分析,key有值,表示,走了联合索引,否则没有走索引
只有第一条sql能触发索引,因为,他符合最左前缀法则,
联合索引也是使用B+树的结构来存储数据的,where后面的查询条件,如果,首先是非name字段,如果是age=30,那么,
去查询b+树的时候,所有节点并不是根据age字段由小到大进行排序的,只能做全表扫描,因为,联合索引节点,是先根据name字段排序的。
posted on 2022-11-16 13:38 weiqinshian 阅读(721) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构