如何使用存储过程
看到一个问题: 为什么开发中不推荐使用存储过程和触发器?
作为开发看来, 存储过程是数据库的”自定义函数”, 而触发器则是数据库的”行为钩子”
存储过程是由流程控制语句和SQL语句书写的一组SQL语句集合
比如在ERP开发中, 十几张表联表查询的情况下, 将多组SQL写入存储过程, 一次调用即可取得结果
- 简化开发, 应用程序代码减少, 提高了开发效率
- 提高查询性能, 直接编译成物理计划, 减少了parse和查询优化步骤
- 减少了网络IO开销
缺点也是有的
- 你需要同时维护两套代码, 同时增加了开发, 测试, 上线的复杂度
- 存储过程无法支持分库分表, 有些分布式中间件不支持存储过程
- 存储过程中的控制逻辑, 是各家数据库自已的方言, 移植到其他数据库成本高
使用存储过程和触发器取决于使用场景
如果你某些业务涉及大量SQL操作, 并且稳定, 极少改动, 使用它也许是不错的
请衡量利弊, 做好取舍
可以参考该链接, 其中有更详细的讨论: https://www.zhihu.com/question/57545650