mysql中的索引

1、索引是什么?

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

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

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

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

2. 索引的检索原理:

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

 

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

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

可以查看出使用了索引只需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 = '杰克'

未添加索引的情况下

添加了索引的情况下

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好度

你的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值