MySQL 索引(一)

来源:互联网 发布:农村淘宝app在哪下载 编辑:程序博客网 时间:2024/06/08 03:31

1. MySQL索引类型

B-Tree 索引
Hash 索引
Fulltext 索引
RTree 索引

2. 创建索引符合如下条件

  1. 较频繁的作为查询条件的字段应该创建索引;
  2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;
  3. 更新非常频繁的字段不适合创建索引;
  4. 不会出现在 WHERE 子句中的字段不该创建索引;

3. 索引优化建议

  1. 于单键索引,尽量选择针对当前 Query 过滤性更好的索引;
  2. 选择组合索引的时候,当前 Query 中过滤性最好的字段在索引字段顺序中排列越靠前越好;
  3. 选择组合索引的时候,尽量选择可以能够包含当前 Query 的 WHERE 子句中更多字段的索引;
  4. 尽可能通过分析统计信息和调整 Query 的写法来达到选择合适索引的目的而减少通过使用Hint 人为控制索引的选择,因为这会使后期的维护成本增加,同时增加维护所带来的潜在风险;

3. 索引使用限制

  1. MyISAM存储引擎索引键长度总和不能超过1000字节;
  2. BLOB和TEXT类型的列只能创建前缀索引;
  3. MySQL 目前不支持函数索引;
  4. 使用不等于( != 或者 <>)的时候 MySQL 无法使用索引;
  5. 过滤字段使用了函数运算后(如abs(column)), MySQL无法使用索引;
  6. Join 语句中 Join 条件字段类型不一致的时候 MySQL 无法使用索引;
  7. 使用 LIKE 操作的时候如果条件以通配符开始(’%abc…’) MySQL 无法使用索引;
  8. 使用非等值查询的时候 MySQL 无法使用 Hash 索引;