14、什么是聚簇索引和非聚簇索引
聚簇索引叶子节点存放完整行数据,一张表只能一个;二级索引叶子只存主键,检索时常需要回表查询聚簇索引获取全部字段。
15、什么是回表
通过二级索引查到主键,再根据主键去聚簇索引查询完整数据的过程就是回表;使用覆盖索引可以消除回表操作。
16、什么是索引覆盖
查询需要的所有字段都存在二级索引内,不用访问聚簇索引,规避回表,就是覆盖索引。
17、什么是索引下推和索引跳跃
索引下推在索引阶段提前过滤数据,减少回表;索引跳跃扫描是 MySQL8.0 优化,允许不满足最左前缀条件时尝试使用联合索引。
18、什么是最左前缀索引
最左前缀原则是联合索引匹配规则,查询需要匹配索引左侧连续字段;遇到范围查询会中断后面字段的索引检索。
19、用了索引还是很慢的原因
可能是索引失效、回表 IO 开销大、索引区分度低、MySQL 优化器放弃索引、出现文件排序、深度分页或者关联查询缺少索引导致。
20、Explain要专注哪些信息
看 type 确定访问级别,key 确认是否走索引,rows 观察扫描数据量,key_len 验证联合索引匹配情况,Extra 排查文件排序、临时表等性能瓶颈。
21、索引失效有哪些原因
索引列函数运算、隐式转换、通配符前置、不满足最左前缀、or 单侧无索引、负向查询、范围截断、索引区分度低,都会造成索引失效。
22、如何sql优化
SQL 优化从业务入手,优化 SQL 写法,合理设计索引避免索引失效、减少回表;借助 explain 定位瓶颈;海量数据场景结合缓存、读写分离、分库分表架构优化。
23、慢sql有哪些原因
慢 SQL 主要由索引不合理、SQL 写法糟糕、锁阻塞等待、单表数据过大、缓冲池不足、缺少缓存、优化器选错执行计划等原因造成。
24、binlog、redlog、undolog的区别
25、什么是buffer pool
26、主从复制的原理
27、什么是深度分页