mysql索引求解
- 内容介绍
- 文章标签
- 相关推荐
问题描述:
--【壹】--:
--【贰】--:
--【叁】--:
--【肆】--:
--【伍】--:
--【陆】--:
对于一个主键为id的表 普通索引 idx_a(a) 和 idx_a_id(a,id)到底有没有区别
大模型对于这个问题的答案似乎一直比较模糊 有时候说没区别 有时候说有区别
innodb
网友解答:--【壹】--:
不知道区别的话,去数据库里EXPLAIN查询你就知道了
--【贰】--:
id是主键 InnoDB 的二级索引叶子节点会带主键
--【叁】--:
innoDB的普通索引都是带id的所以没有区别
image759×659 40.3 KB
image788×526 35.7 KB
--【肆】--:
我建议去问gpt 能给你说的很清楚 怎么可能会模糊呢 联合索引需要遵循最左匹配原则 否则会索引失效 肯定是有区别的啊
--【伍】--:
没区别呀,二级索引会自动带上主键的吧,阿巴阿巴
--【陆】--:
- **idx_a_id(a,id)**这个索引没有意义啊.id为主键,idx(a,id) == idx(id) ,主键本身就是默认的UNIQUE索引,你又查a又查主键,那跟查主键没什么区别,这种脱裤子放屁的垃圾SQL会被SQL优化器自动优化,不会按最左原则。
- idx_a(a) 这是a字段的索引,会在where a 或where a and b and c]的时候(a条件在前面)生效。
- 具体情况,你自己explain下,问100个人也不如explain。
问题描述:
--【壹】--:
--【贰】--:
--【叁】--:
--【肆】--:
--【伍】--:
--【陆】--:
对于一个主键为id的表 普通索引 idx_a(a) 和 idx_a_id(a,id)到底有没有区别
大模型对于这个问题的答案似乎一直比较模糊 有时候说没区别 有时候说有区别
innodb
网友解答:--【壹】--:
不知道区别的话,去数据库里EXPLAIN查询你就知道了
--【贰】--:
id是主键 InnoDB 的二级索引叶子节点会带主键
--【叁】--:
innoDB的普通索引都是带id的所以没有区别
image759×659 40.3 KB
image788×526 35.7 KB
--【肆】--:
我建议去问gpt 能给你说的很清楚 怎么可能会模糊呢 联合索引需要遵循最左匹配原则 否则会索引失效 肯定是有区别的啊
--【伍】--:
没区别呀,二级索引会自动带上主键的吧,阿巴阿巴
--【陆】--:
- **idx_a_id(a,id)**这个索引没有意义啊.id为主键,idx(a,id) == idx(id) ,主键本身就是默认的UNIQUE索引,你又查a又查主键,那跟查主键没什么区别,这种脱裤子放屁的垃圾SQL会被SQL优化器自动优化,不会按最左原则。
- idx_a(a) 这是a字段的索引,会在where a 或where a and b and c]的时候(a条件在前面)生效。
- 具体情况,你自己explain下,问100个人也不如explain。

