mysql中的索引

1、索引是什么?

在mysql当中, 内部系统它有两种查询方式, 一种是(全盘扫描查询),另外一种是通过(索引检索查询),通过添加了索引的字段进行查询, 可以大大提高查询效率

mysql中的索引相当于一本书中的目录, 通过索引查询数据类似于与通过书的目录查找内容,查询速度可以大大增加。

MySQL中的索引是添加在字段当中的, 一个字段只能添加一个索引,或者多个字段添加同一个索引。

索引是以对象的形式体现在mysql中的, 是以树的结构也就(二叉树),它遵循这左小右大的规则进行排序

2. 索引的检索原理:

假如现在有这样一张表,我想查询id = 101这一行数据, 在没有添加索引的情况下, 系统是一行一行往下对比查询的,需要对比5次才能得出结果,如果数据量大,查询速度会非常的慢

mysql中的索引_第1张图片 

假如id字段添加了索引,如下图,它的查询逻辑是这样的:

拿101和100对比一次, 比100大, 走右边, 再拿101和102对比一次, 比102小,走左边,然后再取101的内存地址,再将sql语句转换成直接通过内存地址查询,这样查询速度会快很多。

可以查看出使用了索引只需2步就可以可以查出数据,在数据量大的情况下,速度会质数性提高。

mysql中的索引_第2张图片

3. 怎么创建索引?删除索引?查询索引?

在mysql中,主键和unique(约束)字段上系统会自动添加索引

索引不是随意添加的, 如果索引过多,有可能会拖垮系统性能。 那什么情况下适合添加索引?

条件1:查询数据量庞大

条件2:经常放在where后面的字段

条件3:该字段很少被(增删改)操作

创建索引:在mysql中, 主键字段和

# CREATE INDEX 索引别名 on 表名(字段名);
CREATE INDEX id_index on tableName(id);

删除索引

# DROP INDEX 索引别名 on 表名;
DROP INDEX id_index on tableName;

查看索引

# explain 查询语句
EXPLAIN SELECT * from testdb.tableName WHERE NAME = '杰克'

未添加索引的情况下

添加了索引的情况下

mysql中的索引_第3张图片

索引也会有失效的时候?在什么情况下会失效?

答:在使用了模糊查询,并且%放在前面的时候, 如select * from table where name = "%三";

你可能感兴趣的:(mysql,数据库,java,开发语言)