1. 索引基础概念

索引是数据库中用于加速数据检索的结构,类似于书籍目录。合理使用索引可将查询效率提升10-1000倍(来源:数据库性能调优

常见索引类型

  • 📁 B-Tree:默认索引类型,适合范围查询
  • 🔁 Hash Index:适合等值查询,不支持范围查找
  • 🌲 R-Tree:空间数据索引,用于地理围栏查询
  • 🔁 Full-Text:全文搜索索引,支持模糊匹配

B_Tree

2. 优化原则

2.1 选择性原则

  • 避免对低选择性的字段建索引(如性别字段)
  • 高选择性字段(如身份证号)更适合创建索引
  • 使用复合索引时,优先选择区分度高的字段作为左前缀

2.2 索引维护成本

  • 每个索引会增加写操作的开销(插入/更新/删除)
  • 索引占用额外存储空间(约占用表数据量的10-20%)
  • 需要平衡查询性能与写性能的矛盾

Hash_Index

3. 常见误区

误区一:在所有字段都添加索引
🎯 正确做法:仅对高频查询字段创建索引

误区二:过度使用索引
🎯 正确做法:定期分析索引使用情况(如EXPLAIN分析)

误区三:忽略索引顺序
🎯 正确做法:复合索引字段顺序需与查询条件一致

4. 实战技巧

4.1 索引合并

当查询条件包含多个字段时,可创建覆盖索引(如WHERE a=1 AND b=2可创建(a,b)复合索引)

4.2 前缀索引

对长字符串字段(如URL)可使用前缀索引:

CREATE INDEX idx_url_prefix ON table (url(100));

4.3 索引失效场景

  • 使用LIKE '%value'前缀通配符
  • 对索引字段进行表达式运算(如WHERE status + 1 = 3
  • 使用OR连接条件时,只有第一个字段会被使用

R_Tree

5. 扩展阅读

FullText_Index