mysql核心知识整理

目录

  1. 聚簇索引与非聚簇索引;
    聚簇索引:找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,所以主键就是聚簇索引,修改聚簇索引其实就是修改主键。
    非聚簇索引:索引的存储和数据的存储是分离的,也就是说找到了索引但没找到数据,需要根据索引上的值(主键)再次回表查询,非聚簇索引也叫做辅助索引。
  2. 覆盖索引;
    覆盖索引:联合索引中,查询的字段可以全部在辅助索引中找到,不需要回表时,就叫覆盖索引。
    例如:unikey(a,b,c),select a,b,c from table where a like "hello%" 这种就直接走辅助索引树遍历。select a,b,c,d from table where a like "hello%"这种就会出现回表查询d字段的情况,就不叫覆盖索引。
  3. 索引下推;
    索引下推:联合索引中,击中了辅助索引的前面字段,后面的字段会在存储引擎层就过滤出来。
    例如:select * from people where country like '中%' and name = '张三' 联合索引unikey(country,name),这个sql会用到辅助索引unikey的country字段,在5.6以前没有索引下推,存储引擎会将country like '中%'的数据全部返回给server层由server层来过滤剩下的条件name = '张三',把不符合条件的过滤掉返回给client端,但是在5.6以后有了索引下推icp,这时候会直接在server层就对name = '张三'的数据进行过滤,返回给server端,这就是索引下推。相当于把server层的判断交给存储引擎层。
  4. 最左原则;
    最左原则:联合索引中,查询的条件按左到右的顺序击中。
    例如:unikey(a,b,c),select * from table where a = "hello" and b like "a%" 这种就是满足了最左原则,mysql执行器会选用辅助索引。select * from talbe where b = "word" 这种就没有满足最左原则,mysql会直接执行全表扫描。
  5. 索引结构 b树、b+树、跳表(redis);
    b树:数据存在每个节点上;mongdb
    b+树:数据只是存在叶子节点上;mysql
    跳表:单向有序链表+多级索引。redis
  6. 回表;
    回表:是指查询的条件击中了辅助索引,但是查询的字段除了辅助索引的字段外,还需要到主键索引树中查找的情况就叫做回表。
  7. binlog、redolog、undolog;
  8. mvcc;
  9. 锁;
  10. 查询优化。
相关推荐
Omics Pro3 分钟前
Agentic AI正在重构整个生物信息学工作流
大数据·数据库·人工智能·机器学习·语言模型·自然语言处理·重构
运维行者_9 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
国强_dev10 小时前
技术探讨:使用 stunnel 加密转发数据库连接时,如何获取客户端真实 IP?
数据库·网络协议·tcp/ip
@insist12310 小时前
系统规划与管理师-信息系统规划核心工作要点解析
数据库·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
超级数据查看器10 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
数安3000天10 小时前
增量数据如何自动分类分级,避免目录“过期“?
大数据·数据库
南墙上的石头11 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
画中有画12 小时前
论向量数据库在项目中的应用
数据库
spider_xcxc13 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
l1t13 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb