索引选择原则
explain分析语句与profile分析
联合索引结构与索引匹配原则
mysql对于索引优先考虑的对象
mysql索引的挑选原则
explain + query语句
explain SELECT id from products ORDER BY id LIMIT 10000000,1
主要看看select_type(查询类型)、type(索引类型)、key(索引),key_len(索引长度,组合索引中可以用到)、rows(找到数据前检索的行数),extra(额外信息)
profile使用方法:
//打开分析
set GLOBAL profiling=1;
执行查询语句:
SELECT id from products ORDER BY id LIMIT 10000000,1
查询所有profiles
show profiles;
查看 刚才查询语句的详细分析
show profile ALL for query 405;
//关闭分析
set global profiling=0;
联合索引结构与索引匹配原则
最左前缀匹配原则:在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联 合索引的最左边开始匹配。
mysql对于索引优先考虑的对象
-
条件与分组排序共存的情况下
当sql中where条件,分组,排序同时存在时,MySQL的优化器会优先选择条件来确定使用的索引,因为 where可以减少更多的sql扫描,而排序和分组往往进行的是全表扫描。 -
条件与排序共存
所有的排序都是在条件过滤之后才执行的,所以如果条件过滤了大部分数据的话,几百几千条数据进行排序其实并不是很消耗性能,即使索引优化了排序但实际提升性能很有限。 -
对于分组和排序共存的情况下
mysql会优先根据分组去选择索引,那是因为sql需要先将要查询的数据进行 分组,随后才会进行数据的排序。
mysql索引的挑选原则
字段一般是推荐重复比较少的字段影响到数据的检索,如果是项目需求(可建立联合索引)
唯一字段可以单独建立单索引,非唯一考虑联合索引,推荐尽量使用唯一字段建立索引
索引的个数,联合索引的个数 最佳 6个 以内,如果索引因为项目需求:最多 10个
索引的使用遵循最左匹配原则其次覆盖索引
尽量选择小的字段建立索引 int ,varchar(10), char(5)
避免<,<= ,> ,>= , % ,between 这样的条件。选择索引的字段的范围和模糊之前,因为范围与模糊 会引起索引失效,针对于联合索引,就是联合索引的中间尽量不要有范围查询的字段
尽量多使用explain分析
避免更新频繁的字段 (二叉树会一直变化,导致性能变慢)
建立的索引- 优先考虑 建立 联合索引
索引字段不要有 null, 不是 ‘’
1. 唯一字段可以建立单索引 where id = 4 非唯一字段可以考虑建立联合索引
2. 索引的个数与包含的字段,最佳是不超出6个,勉强可以是10个 =》 垂直分表
3. 索引的使用遵循最左匹配原则其次就是覆盖索引
4. 索引的选择字段尽量要小一些 int varchar(10) char(5) es 存储文本路径
5. 避免 like between 等范围查询
explain select name from staffs where name like "s%"; 可以使用到索引
explain select * from staffs where name like "%ars%";
explain select * from staffs where name like "%sky";
6. 尽量多使用explain进行分析
7. 优先考虑建立联合索引,索引的字段不要包含null 或者是 '';
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥