索引基础
索引类型
B-Tree:B 树,InnoDB 底层是二叉树
B+Tree:B+树,扩展的 B 树,上一个叶子节点指向下一个叶子节点
Hash:哈希表,类似 Map
自适应哈希:对于某些经常使用的数据,在 B+Tree 上包一层 Hash
R-Tree:空间索引,可以用地理数据存储
全文索引:类比 ElasticSearch,匹配关键字查询
其他
索引的优点
- 大大减少服务器扫描量
- 帮助服务器避免排序和临时表
- 将随机 IO 转为 顺序 IO(因为存的时候是顺序存储的)
高性能的索引策略
独立的列
不要将索引放在表达式和函数中,MySQL 无法帮你查索引。
前缀索引和索引选择性
很长的字符串字段,为该字段设置一个前缀索引),这样查询会快得多。
// 为 city 添加一个前缀索引
alter table demo add key(city(7))