索引的作用

  • 索引类似书籍目录,查找数据,先查找目录,定位页码

性能影响

  • 索引能大大减少查询数据时需要扫描的数据量,提高查询速度,
  • 避免排序和使用临时表
  • 将随机I/O变顺序I/O
  • 降低写速度,占用磁盘

使用场景

  • 小表,全盘扫描效率更高
  • 中大型表,索引作用很大
  • 特大型表,建立和使用索引的代价将随之增大,可采用分区技术

索引类型

  • 普通索引,最基本索引,无约束
  • 唯一索引,具有唯一性约束,
  • 主键索引,特殊唯一索引.不允许空值,单表唯一,可以与外键构成参照完整性约束
  • 组合索引,多列组合在一起创建索引
  • 外键索引,仅INNODB使用,保证数据的一致性,完整性,实现级联操作
  • 全文索引,仅MYISAM使用,且只能针对英文

创建原则

  • 适合索引的列是where和join的on中用到的列
  • 索引列的基数越大,效果越好
  • 对字符串索引,应该制定一个前缀长度,可以节省索引空间
  • 根据需要创建组合索引
  • 避免创建过多索引
  • 主键尽量选择较短的数据类型,减少磁盘占用,提高查询效率

注意事项

  • 复合索引遵循前缀原则
  •  like查询,%不能在前,可以考虑全文索引
  • column is null 可以使用索引
  • 如果mysql估计使用索引比全表扫描更慢,会弃用索引
  • 如果or前的条件中的列有索引,后面的没有,索引不会被用到
  • 列类型是字符串,查询时需要给值加上引号代表字符串,否则索引无效
12-19 05:57