很多人写 SQL 写到一定阶段会卡在同一个地方:单表增删改查已经很熟,可一旦遇到「这段逻辑到底该放在应用层还是数据库层」「这条查询为什么突然走了全表扫描」就说不清楚。这门课针对的正是这个缺口——自定义函数、触发器、索引,三块内容都属于「平时不一定用、但排查和优化时绕不开」的数据库能力。
先确认自己是不是该补这一课
如果你符合下面任意一条,这门课的内容对你会比较直接:
- 能写多表联查和子查询,但没写过存储函数,也没在项目里用过触发器;
- 知道索引能加快查询,但说不清联合索引的最左前缀为什么这么设计,也不清楚什么时候索引会失效;
- 碰到过「数据莫名其妙多了一行/少了一行」,最后靠翻代码才发现是别人在表上挂了触发器;
- 面试被问到「什么情况下不建议建索引」,只能答出「数据量小的时候」。
如果这几条你都不沾,那说明这部分能力你已经具备,不必重复投入时间。
自定义函数和触发器:先分清边界,再动手写
这两块最容易学歪的地方,是把它们当成「万能胶水」,什么业务逻辑都往里塞。课程的价值在于帮你建立判断标准:什么样的计算适合封装成函数复用、函数在查询里被调用的性能代价是什么、触发器适合处理哪一类一致性动作,以及为什么很多团队在规范里明确禁用触发器。
学的时候不要只看语法能不能跑通。更值得关注的是几个具体问题:函数里能不能做数据修改、触发器里的错误会不会连带回滚主语句、BEFORE 和 AFTER 的触发时机差异会导致什么结果。这些细节在真实排查现场比语法本身重要得多。
索引部分要带着执行计划一起看
索引是这三块里最需要动手验证的内容。光记住「B+ 树」「聚簇索引」这些名词没用,关键是要能对着一条 SQL 说出:它会不会用上索引、用的是哪个索引、为什么另一个索引用不上。课程里关于索引的部分,建议配合 EXPLAIN 的输出来看,重点盯住访问类型、命中行数估算和额外信息三列。
另外几个容易被忽略的点也值得留意:联合索引的列顺序怎么定、前缀索引的取舍、覆盖索引能省掉哪一步回表、以及隐式类型转换和函数包裹列为什么会直接让索引失效。这些不是理论题,是日常改慢查询时真正动手改的地方。
配套练习建议与看完应能回答的问题
建议每学完一块内容,就在自己的测试库上跑一遍,别只停留在看。可以准备一张几十万行的表专门用来观察索引效果,函数和触发器则用一个带审计需求的场景来练手,比如记录某张表的变更历史。
学完之后,你至少应该能清楚地回答这些问题:
- 同一个逻辑,写成存储函数和在应用层计算,各自适合什么场景?
- 触发器执行失败时,主表的操作会被怎样处理?
- 一条走了全表扫描的查询,你会按什么顺序去排查原因?
- 联合索引 (a, b, c) 在哪些查询条件下会被部分使用、哪些完全用不上?
如果这些问题你能不看资料答出来,这门课的目的大概就达到了;如果还含糊,说明有具体章节值得回头再刷一遍。
59fb3a679979ee63a5100638d5dd9998_2a1f112f478ee4488e2d39811e831f8e.webp 下载附件 保存到相册 2025-11-13 15:39 上传
课程推荐
《MySQL数据库高级开发(自定义函数+触发器+索引)视频课程》59fb3a679979ee63a5100638d5dd9998_2a1f112f478ee4488e2d39811e831f8e.webp 下载附件 保存到相册 2025-11-13 15:39 上传【技能收获】学完可掌握:MySQL / 数据库。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(61 节)
* 1-1 介绍数据完整性.mp4
* 1-2 实体完整性--主键约束.mp4
* 1-3 实体完整性--自增主键.mp4
* 1-4 实现实体完整性--唯一性约束.mp4
* 1-5 实现实体完整性--唯一性约束.mp4
* 1-6 域完整性-默认值约束.mp4
* 1-7 域完整性--非空约束.mp4
* 1-8 参照完整性外键约束.mp4
* 2-1 创建使用存储函数.mp4
* 2-2 汉字转拼音的函数.mp4
* 2-3 创建能够随机产生姓名的函数.mp4
* 2-4 在存储函数中使用变量和判断语句.mp4
* 2-5 在函数中使用while循环.mp4
* 2-6 查看创建函数的SQL语句.mp4
* 3-1 什么是视图.mp4
* 3-2 创建视图的目的-隐藏数据复杂性.mp4
* 3-3 创建视图的目的-实现数据访问安全.mp4
* 3-4 使用视图给列提供别名增加计算列.mp4
* 3-5 以视图为基表创建新的视图.mp4
* 3-6 使用视图实现行列转换.mp4
* 3-7 通过视图插入 删除和修改记录.mp4
* 3-8 查看修改和删除视图.mp4
* 4-1 介绍存储过程.mp4
* 4-2 创建无参数的存储过程查询数据.mp4
* 4-3 创建带参数的存储过程查询数据.mp4
* 4-4 使用存储过程插入数据.mp4
* 4-5 在存储过程中使用循环插入学生记录.mp4
* 4-6 使用存储过程删除数据.mp4
* 4-7 使用存储过程备份表.mp4
* 4-8 使用时间产生表的名称自动备份数据.mp4
* 4-9 使用存储过程还原表中的记录.mp4
* 4-10 查看和删除存储过程.mp4
* 5-1 介绍触发器能够实现的功能.mp4
* 5-2 下订单自动减少库存.mp4
* 5-3 库存不够禁止下订单.mp4
* 5-4 使用触发器控制能够插入数据的时间段.mp4
* 5-5 限制产品价格一次不能上调超过20.mp4
* 5-6 限制某列的取值范围.mp4
* 5-7 使用触发器跟踪数据的修改插入和删除.mp4
* 6-1 介绍索引.mp4
* 6-2 能够创建聚集索引的存储引擎.mp4
* 6-3 创建和删除索引.mp4
* 6-4 验证索引提高查询速度.mp4
* 6-5 在哪些列上创建索引.mp4
* 6-6 建立索引对增删改速度影响.mp4
* 6-7 使用索引注意事项.mp4
* 6-8 使用索引查找和排序.mp4
* 6-9 使用索引覆盖实现order by排序.mp4
* 7-1 介绍事务.mp4
* 7-2 事务类型.mp4
* 7-3 事务并发带来的问题.mp4
* 7-4 事务隔离级别-读取未提交数据和读取提交的数据.mp4
* 7-5 设置事务隔离级别-可重复读和串行化.mp4
* 7-6 设置当前会话和全局事务隔离级别.mp4
* 7-7 锁的粒度.mp4
* 7-8 表级锁的应用.mp4
* 7-9 设置表级锁并发性.mp4
* 7-10 InnoDB行级锁-多版本的并发控制协议.mp4
* 7-11 InnoDB数据库引擎行级锁.mp4
* 7-12 在存储过程中使用事务.mp4
* 7-13 死锁的产生和处理.mp4
