Mysql 索引

索引是用来加快数据库查询的最重要的技术。

Mysql官方的定义:索引是帮助Mysql高效获取数据的数据结构,所以:索引的本质是数据结构。

数据之外,数据库还存储着满足特定查找算法的数据结构,这种数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

索引的分类:

1)B树索引,大部分引擎都支持,包括普通索引,唯一所以和主键索引;

2)Hash索引,只有Memory 引擎支持,使用场景简单;

3)R树索引,空间索引,主要用于存储地理空间,MyISAM

4)Full-text 全文索引,MyISAM,InnoDB 5.6 开始支持

索引的选择原则

1)较频繁作为查询条件的需要创建索引

2)唯一性太差的不适合单独创建索引;

3)更新非常频繁的数据不适合作为索引。

4)不会出现在where子句中的字段不应该建索引;

5)where 和 join 子句用到的列需要加索引;

6)尽量使用短索引,比如 可以取字符串的前10个字符建立 索引

不建议建立索引的情况:

1)表中数据比较少的时候,比如 少于 2000

2)列的选择性比较低的时候,选择性计算: select count(distinct(column))/count(*) from table;

索引能够使用的操作符:    < <= = > >= between in ,like 语句需要不以 % 或 _ 开头

索引的最左匹配原则

1)多列索引,用到左边的索引才能匹配

2)like语句 以 % 或 _ 开头 不能匹配索引

3)范围列 可以用到索引,但是范围列后面的列不能用到索引

4)查询函数中有索引或表达式 则不能用到索引

索引的代价

1)索引需要消耗存储空间

2)索引会加重 插入、删除和修改记录时的负担

3)Mysql运行时需要消耗系统资源维护索引

所以,如果表的记录比较少,字段的选择性比较低,不适合建立索引

你可能感兴趣的:(Mysql 索引)