mysql 调优-索引建议
- 列是唯一的,或有唯一约束(alibaba 规范指出只要是唯一的必须加索引,哪怕是多列组合是唯一的也要添加一个多列索引)
- 频繁作为 where 条件的字段
- 经常 group by 或 order by 的字段(对 select 结果集再次索引才能再次得到一个最终结果集)
- distinct 字段
- update,delete 的 where 字段(效果非常明显)
- 连接查询的 where 和 on 字段
- 字符串字段索引使用前缀索引
7.1 前面一部分作为索引,不要让整个字符串作为索引(alibaba规范强制要求)
7.2 问题是取多长?区分度来指定长度,公式:count(distinct left (列名,索引长度))/count(*)
- 区分度高(散列性高)的适合作为索引(性别区分度就比较低,不适合),一般超过 33% 就可以认为区分度比较高。反之区分度低的列(低于10%)不适合创建索引
- 联合索引,频率最高的放左边(最左匹配)
- 联合索引效率高于单列索引
- 每个表索引数量不超过 6 个
- 不建议无序的列作为索引(页分裂,比如不建议 UUID 作为主键)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析