索引是数据库中较常用的优化手段之一,下面让我们看看索引的分类和使用

索引的存储分类
索引是在mysql 的存储引擎层中实现的,而不是在服务器层实现的。意味着每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。
下面是三个比较常用的引擎支持的索引类型比较(myisam,memory,innodb)
SQL优化(二)、2.1索引分类

目前mysql提供了4种索引。

  • b-TREE索引:最常见的索引类型,大部分引擎都支持b树索引。
  • hash索引:只有memory/heap引擎支持,使用场景较简单,适用于key-value查询,比b-tree索引查询更迅速;hash索引不适用范围查询,例如<、>、<=、>= 。即如果使用memory/heap引擎,并且where 条件中不使用“=“进行索引列,那么就不会使用索引。
  • r-tree索引(空间索引):空间索引是myisam的一个特殊的索引类型,主要用做地理空间数据类型,使用较少。
  • full-text(全文索引):全文索引也是myisam的一个特殊索引类型,主要用做全文索引,innodb从mysql5.6开始提供对全文索引的支持。

mysql目前不支持函数索引,但是能对列的前面某一部分进行索引,例如title前10个字符进行索引,这个特性可以大大缩小索引文件的大小,但是前缀索引的缺点也比较明显,就是有排序order by 和 分组 group 不用 操作的时候无法使用前缀索引。

举一个创建前缀索引的小例子:

-- 如果存在就删掉,原本没有的话执行执行下一个语句
 mysql> drop index idx_title on film;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create index idx_title on film(title(10));
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

附:hash索引和b-tree索引是比较常用的索引,memory/heap引擎只有在“=“的条件下 才会使用索引。

分类:

技术点:

相关文章: