很多人写 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