一架梯子,一头程序猿,仰望星空!
MySQL性能优化面试题 > 内容正文

什么样的字段适合建立索引?选择什么索引比较合适?


问题简答

核心指导原则是给经常作为查询条件的字段上创建索引,选择那些数据区分度高的字段。

问题详解:

索引字段选择建议

  1. 选择常用于WHERE和JOIN子句的字段作为索字段,可以优化查询性能。
  2. 选择那些数据区分度高的字段。数据区分度指的是重复的数据多与少,重复数据越少区分度越高,例如:账号基本上唯一没有重复的,性别不是男就是女,区分度低,性别创建索引,也没法快速定位到具体的数据,查询性别=男,结果查出了100万数据,索引利用率不高。
  3. 组合索引的顺序应该优先考虑数据区分度高的字段排在前面,以便在过滤数据时提高索引效率。
  4. 避免在字段上创建过多的索引,因为这可能会导致维护索引的开销超过了索引的性能优势。

索引类型选择建议

  1. 唯一性:如果字段具有唯一性,应该使用唯一索引。
  2. 组合搜索:如果多个字段经常一起用于搜索或排序,应该使用组合索引,合理使用组合索引可以减少索引的数量。
  3. 频繁更新:如果字段经常更新,需要权衡使用普通索引和不使用索引的影响。
  4. 短字段:短字段适合使用普通索引,因为它们可以很快地定位到数据。
  5. 长文本字段:长文本字段适合使用全文索引,而不是普通索引。
  6. 主键字段:每张表都应该有一个主键,主键字段适合使用主键索引。
  7. 经纬度坐标字段:如果涉及地理信息查询,可以使用空间索引(R-Tree索引)