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 = "%三";
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~