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