MySQL 索引初步了解
MySQL 索引初步了解
-
-
-
- 一、索引的类型
- 二、创建索引的技巧
-
-
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果。
一、索引的类型
- UNIQUE唯一索引
不可以出现相同的值,可以有NULL值。
- INDEX普通索引
允许出现相同的索引内容。
- PRIMARY KEY主键索引
不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引。
- fulltext index 全文索引
上述三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词,然而并没有什么卵用,因为只有myisam以及英文支持,并且效率让人不敢恭维,但是可以用coreseek
和xunsearch
等第三方应用来完成这个需求。
二、创建索引的技巧
-
维度高的列创建索引。
数据列中不重复值出现的个数,这个数量越高,维度就越高。如数据表中存在8行数据a,b ,c,d,a,b,c,d这个表的维度为4。要为维度高的列创建索引,如性别和年龄,那年龄的维度就高于性别。性别这样的列不适合创建索引,因为维度过低。
-
对 where,on,group by,order by 中出现的列使用索引。
-
对较小的数据列使用索引,这样会使索引文件更小,同时内存4、中也可以装载更多的索引键。
-
为较长的字符串使用前缀索引。
-
不要过多创建索引,除了增加额外的磁盘空间外,对于DML操作的速度影响很大,因为其每增删改一次就得从新建立索引。
-
使用组合索引,可以减少文件索引大小,在使用时速度要优于多个单列索引。