mysql索引学习
概念:是一种高效获取数据的数据结构(有序)
索引结构
二叉树
红黑树
hash
btree,叶子节点存数据,一个页占用数据大,层级结构就多
b+tree,非叶子节点存储数据,mysql做了优化,双向链表
索引分类:
主键索引、唯一索引、常规索引、全文索引
聚集索引、非聚集索引
通过命令查询增删改查执行次数
show global status like 'Com_______'
sql满查询分析
show_query_log=1;
性能分析explain
type、possable_keys key key_len rows ref
extra字段:using index condition 使用了索引,需要回表查询
using where;using index使用了索引,不需要回表查询
索引失效场景:
or:两边字段都是索引才会走索引
like:前模糊不走索引
类型转换不走索引
数据覆盖,mysql优化器会判断哪个效率高,全盘扫描就不走索引
is null和is not null可能会走索引或者不走
sql提示
查询用哪个索引 use index、force index
索引设计原则
1、数据量大频繁建立索引的
2、查询条件操作的字段建立索引
3、区分度高的列建立索引
4、尽量使用联合索引,避免回表
5、要控制索引的数量
6、如果索引列不能存储null值,在建表通过not null约束它。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~