可能是重复问题:
将SQL保留在存储过程中与代码相比,有哪些利弊?
我正在收听Hanselminutes播客“Micro ORM的崛起”,其中一位嘉宾(Sam Saffron和Rob Conery)概述了DBA坚持使用存储过程的经典原因:
- 它们是预编译的,这使它们具有执行速度优势
- 它们隐藏了底层数据库模式,允许界面和实现的分离,从而防止脆弱性。
然后一位嘉宾说这些不是好的论点,并建议DBA坚持使用存储过程的真正原因是他们只是想保护自己免受中间层开发人员的无知之苦。
我认为这个说法有些极端。当然我可以同意论点#2是有缺陷的,但是我认为众所周知向数据库发送任意(未编译)SQL会影响性能。是否有什么我不知道的东西可以解释为什么论点#1并不真实?我的猜测是虽然存在性能问题,但它很少有影响。这或许类似于一个开发者试图优化他写的每个循环,即使只有1%的循环受益于调整。我表达了这个想法吗?