索引基础

索引类型

B-Tree:B 树,InnoDB 底层是二叉树
B+Tree:B+树,扩展的 B 树,上一个叶子节点指向下一个叶子节点
Hash:哈希表,类似 Map
自适应哈希:对于某些经常使用的数据,在 B+Tree 上包一层 Hash
R-Tree:空间索引,可以用地理数据存储
全文索引:类比 ElasticSearch,匹配关键字查询
其他

索引的优点

  1. 大大减少服务器扫描量
  2. 帮助服务器避免排序和临时表
  3. 将随机 IO 转为 顺序 IO(因为存的时候是顺序存储的)

高性能的索引策略

独立的列

不要将索引放在表达式和函数中,MySQL 无法帮你查索引。

前缀索引和索引选择性

很长的字符串字段,为该字段设置一个前缀索引),这样查询会快得多。

  1. // 为 city 添加一个前缀索引
  2. alter table demo add key(city(7))

多列索引

合适的索引列顺序