数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天

数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天

大家好呀!我是数据库小学妹

前几篇我们学会了各种查询技巧:单表查、多表连、分组统计、子查询嵌套。但随着查询的数据越来越多,我就发现:

同样一条查询oracle 建立唯一索引,数据少的时候秒出,数据多了居然要等好几秒!有没有办法让查询变快?

当然是有的!今天给大家分享的就是这个可以让查询速度飞起来的神器——“索引”。它就像书的目录,能帮数据库快速找到目标数据,而不是一页页翻。

一、没有索引是什么体验?

想象一下,你拿到一本没有目录、没有拼音索引的《新华字典》。想查“数据库”三个字是什么意思,你只能从第一页开始,一行一行往下看……

这就是全表扫描:数据库把整张表的每一行都翻一遍,直到找到匹配的数据。数据量小的时候无所谓,一旦有几十万、几百万行,就会慢到怀疑人生。

而索引就是给数据建的“目录”或“拼音索引”。有了它,数据库可以像查字典一样,先定位到大概位置,再快速找到目标。

索引的本质是一种数据结构(MySQL里通常是B+树),它能帮助数据库跳过大量无关数据,直接定位到目标行。

二、索引长什么样?

假设有一张用户表 users,没有索引时想查 name = '小明',数据库会一行一行对比。

给 name 列加上索引后,数据库会维护一个按字母排序的目录:

现在查 name = '小明',数据库先去目录里找到“小明”oracle 建立唯一索引,然后直接跳到第3行,不需要翻其他行。

这就是索引加速的原理。

三、怎么创建和使用索引?1. 创建索引

CREATE INDEX idx_name ON users (name);

2. 查看表的索引

SHOW INDEX FROM users;

3. 删除索引

DROP INDEX idx_name ON users;

4. 创建唯一索引(值不能重复)

CREATE UNIQUE INDEX idx_phone ON users (phone);

四、什么时候该用索引?什么时候不该用?

索引不是越多越好。每建一个索引,插入、更新、删除数据时都会多花时间维护索引。读写平衡很重要。

五、最左前缀原则:联合索引的小秘密

如果你经常同时用 name 和 age 作为条件:

SELECT * FROM users WHERE name = '小明' AND age = 22;

可以建联合索引:

CREATE INDEX idx_name_age ON users (name, age);

这里需要注意:联合索引遵循最左前缀原则。意思是,查询条件必须从索引的最左边列开始才能用到索引。

所以建联合索引时,要把最常用的筛选列放在最左边。

六、新手避坑指南(血泪总结)

七、今日学习心得

今天的内容总结成三句话:

索引就是书的目录数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天,帮数据库快速定位数据,避免全表扫描不是越多越好,适合经常作为 WHERE、JOIN、ORDER BY 的列联合索引注意最左前缀,从最常用的列开始

以前不知道索引的时候,觉得“查询慢就慢呗oracle 建立唯一索引,等等就好了”。现在学会用 查看执行计划,看到 type 列从 ALL(全表扫描)变成 ref(使用索引),那种成就感,就像给自行车装上了发动机。

我是数据库小学妹,一个从设计转行数据库的菜鸟。 我们一起,把复杂的技术变得简单有趣!

本文为个人学习总结,所有命令均在MySQL 8.0环境下验证。索引是把双刃剑,合理使用才能让查询飞起来。

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们