MySQL 中最左前缀要求的必要性
问题:
MySQL 中联合索引有最左前缀的要求,即需要查询最左边的列才能使用索引。优化器为什么不能自动调整顺序,使得满足最左前缀条件?
回答:
对最左前缀的理解有误。
如 index('user_id', 'created_at') 索引,虽然查询中 created_at 排在最左,但 user_id 同样满足最左前缀条件,因为 user_id 位于索引的最左边。
最左前缀规则如下:
- 使用索引的查询条件中,首列必须出现在联合索引的最左边。
- 后续列可以任意排列,只要满足第一个规则即可。
示例:
联合索引 (a, b, c) 的查询示例:
- where a, b, c
- where a, c
- where a, b
- where a
只有满足最左前缀的查询才能走索引,例如:
- where b, c 不能走索引(因为 a 未出现)
注意:
- where 子句中列的顺序可以任意组合,但须满足最左前缀规则。
- order 子句中,首列也必须满足最左前缀条件。
以上就是为什么 MySQL 联合索引必须满足最左前缀原则?的详细内容,更多请关注抖狐科技其它相关文章!
-
play的过去式现在分词单三形式
play 的过去式是 played,现在分词是 playing,单三形式是 plays。play 的过去式、现在分词和单三形式 过去式: played 现在分词: playing 单三形式: play...
-
OPPO成《英雄联盟》S14全球总决赛全球合作伙伴:Find X8系列要来了
9月24日消息,今日oppo官方宣布成为《英雄联盟》s14全球总决赛全球合作伙伴,该比赛将于明日20:00正式开赛,首先由lec赛区的mdk和vcs赛区的vke打响揭幕战。 OPPO还发布了一段宣传视...
-
vivo X200 / Pro 手机发布:全球首发天玑 9400 处理器,4299 元起
10 月 14 日消息,vivo X200 系列手机今晚正式发布,全球首发搭载天玑 9400 处理器,标准版 4299 元起、Pro 版 5299 元起。 发布会的开始,vivo 宣布 X200 系列...
-
微信怎么关闭uc浏览器自动续费
是的,可以通过以下步骤关闭微信上的 uc 浏览器自动续费:1. 打开微信并转到“我”选项卡。2. 点击“支付”,然后点击“自动扣费”。3. 在订阅列表中找到 uc 浏览器。4. 点击右上角的“关闭自动...
-
extjs API 查询参数示例
api 查询 参数是附加到 api 请求的 url 的键值对,用于向服务器发送附加信息。它们允许客户端(例如网络浏览器或应用程序)在向服务器发出请求时指定某些条件或传递数据。查询参数添加到 url 末...