菜鸟笔记
提升您的技术认知

什么是索引?

1.什么是索引?

索引是一种特殊的文件,它包含着对数据表里所有记录的引用指针

索引是一种数据结构,以协助快速查询,更新数据库中的数据

所有的实现通常使用B树接变种B+树

更通俗的说索引就相当于目录,为了方便查找书中的内容,通过对内容建立索引形成目录

索引是一个文件,它是要占用物理空间的

2.索引的优缺点?

索引的优点:

1.可以大大加快数据的检索速度,这个是创建索引的主要原因

2.通过使用索引,可以查询的过程中,使用优化隐藏器,提高系统性能

索引的缺点:

1.时间方面:创建索引和维护索引要耗费时间,具体的,当对表中的数据进行增加,删除和修改的时候,索引也要动态维护,会降低增删改的执行效率

2.空间方面:索引需要占用物理内存

3.MySQL的索引分类

单例索引

1.普通索引:MySQL中的基本索引类型,没有什么限制,允许在定义索引的列中插入重复和空值,纯属为了查询更快 ALTER TABLE table_name ADD INDEX index_name(column)

2.唯一索引:索引列中的值必须是唯一的,但是允许空值 ALTER TABLE table_name ADD UNIQUE(column)

3.主键索引:是一种特殊的唯一索引,不允许有空值

复合索引

多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用复合索引时遵循最左侧前缀集合 ALTER TABLE table_name ADD INDEX index_name(column1,column2,column3)

全文索引

解释:就是在一对文字中,通过某个关键字等,就能够到该字段所属的记录行

只有MyISAM引擎才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引

ALTER TABLE table_name ADD FULLTEXT(column)

空间索引

空间索引是对空间数据类型的字段建立索引

MySQL中的空间字段有四个,GEOMETTY,POINT,LINESTRING,POLYGON

4.索引失效

1.like以%开头的索引无效,但是like以%结尾,索引有效

2.or语句前后没有同时使用索引会失效,当且仅当or语句查询条件的前后均有索引生效

3.复合索引,使用的不是第一列索引的时候,索引失效,即最左侧匹配规则

4.数据类型出现隐式转换,比如varchar不加单引号的时候可能会自动转换成int类型,这个时候索引失效

5.在索引列上使用IS NULL或者 IS NOT NULL的时候,索引失效,因为索引是不索引空间的

6. 在索引字段上使用 NOT <> != 时候不会使用索引的,对于这样的处理只会进行全表扫描

7. 对索引字段进行计算操作,函数操作时不会使用索引

8. 当全表扫描速度比索引速度快的时候不会使用索引