MySQL -索引 | wniu

MySQL -索引

概述

MySQL中索引有两大存储类型 BTREE和HASH
  • MyISAM和InnoDB存储引擎只支持BTREE索引。
  • MEMORY/HEAP存储引擎可以支持HASH和BTREE索引。
    使用索引的优点
    1. 加快数据的查询速度。
    2. 唯一索引,可以保证数据库表中每一行数据的唯一性。
    3. 在实现数据的参考完整性方面,可以加速表和表之间的连接。
    4. 在使用分组和排序子句进行数据查询时,也可以显著减少查询中分组和排序的时间。
    使用索引的缺点
    1. 占用磁盘空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸(合理运用,问题不大)。
    2. 损耗性能(添加、修改、删除) 索引需要动态地维护。
索引分类
  1. 普通索引:最基本的索引,没有任何限制,是我们大多数情况下使用到的索引。

  2. 唯一索引:与普通索引类型,不同的是唯一索引的列值必须唯一,但允许为空值。

  3. 全文索引:全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。

  4. 组合索引:将几个列作为一条索引进行检索,使用最左匹配原则。

建立索引的原则
  • 合理设计和使用索引。
  • 在关键字段的索引上,建与不建索引,查询速度相差近100倍。
  • 差的索引和没有索引效果一样。
  • 索引并非越多越好,因为维护索引需要成本。
  • 每个表的索引应在5个以下,应合理利用部分索引和联合索引。
  • 不在结果集中的结果单一的列上建索引。比如性别字段只有0和1两种结果集,在这个字段上建索引并不会有太多帮助。
  • 建索引的字段结果集最好分布均匀,或者符合正态分布。
0%