MySQL索引,MySQL中索引的限制?

MySQL中索引的限制:

1、MyISAM存储引擎引键的长度综合不能超过1000字节;

2、BLOBTEXT类型的列只能创建前缀索引;

3、MySQL目前不支持函数索引

4、使用!= 或者<>的时候MySQL不能使用索引;

5、过滤字段使用了函数运算的时候如  abs(key), sum(key)的时候MySQL无法使用索引;

6、使用LIKE操作的时候以%开始无法使用索引,所以尽量写出key LIKE 'abc%' 而不要写出 '%abc%' ,后一种方法是不会使用到索引的;

7、使用非等值查询的时候,MySQL无法使用Hash索引

顺便说下MySQL索引的几种类型:

1、B-Tree索引,这种也是最主要的索引类型;

2、Hash索引,Hash索引是一步到位,所以他的效率比B-Tree还要好,但是它也有缺点例如由于存放的是Hash值所以只支持<=> 和in操作。由于存放的时候经过Hash计算,所以不能排序。而且当存在许多相同的Hash值的时候,它的效率会变低;

3、Fulltext索引,这种索引可以用来做全文搜索目前只有CHAR,VARCHAR,TEXT 三种类型支持。Fulltext主要是用来替代效率低下的 LIKE '%******%'操作的。另外Fulltext对于中文的支持不太好,需要第三方的补丁或者插件来完成。还有就是比较的消耗资源,所以慎用。

4、R-Tree索引,主要是用来解决空间数据检索的。只有MyISAM引擎支持空间索引,相对于B-Tree,它的优势在于范围查找。

原文地址:https://www.cnblogs.com/52php/p/5675817.html