1、自优化能力
1.1、MySQL索引的自优化-AHI (自适应HASH索引)
MySQL的InnoDB引擎, 能够创建只有BtreeAHI作用:自动评估"热"的内存索引page, 生成HASH索引表帮助InnoDB快速读取索引页, 加快索引读取的效果相当与索引的索引show variables like '%index%';#默认已开启 ONinnodb_adaptive_hash_index
1.2、MySQL索引的自优化-Change buffer
比如insert, update, delete 数据
对于聚簇索引会立即更新
对于辅助索引, 不是实时更新的 ★
在InnoDB 内存结构中, 加入了insert buffer (会话), 现在版本叫change buffer
Change buffer 功能是临时缓冲辅助索引需要的数据更新
当我们需要查询新insert 的数据, 会在内存中进行merge (合并)操作, 此时辅助索引就是最新的
1.3、8.0 版本索引的新特性
a. 不可见索引: invisable/visable index
针对优化器不可见, 但是索引还在磁盘存在, 还会自动维护。
对于索引维护时, 不确定索引是否还有用, 这时可以临时设定为 invisable
#大表的索引删除和创建很耗时, 拿不定注意可以暂时设置 invisable观察一段时间
b. 倒序索引
应用场景:
8.0之前, 创建索引时, 无论是单列索引还是联合索引, 都是默认只能按照从小到大的顺序排序
不能差创建按照从大到小的顺序排序
SELECT *
FORM t1
WHERE c = xxx
ORDER BY a ASC, b DESC;
#创建联合索引, 指定b列为降序, c,a为升序
index idx (c,a,b desc)