是否更好地使用存储过程或使用连接字符串和所有好东西以旧方式执行它?我们的系统最近运行缓慢,我们的经理希望我们试着看看我们是否可以加快速度,我们正在考虑将一些旧的数据库调用更改为存储过程.这值得么?
首先要做的是检查数据库是否设置了所有必要的索引.分析代码缓慢的位置,并检查与其相关的相关SQL语句和索引.看看是否可以重写SQL语句以提高效率.检查您是否没有为循环中的每次迭代重新编译SQL(准备好的)语句,而不是在其外部重新编译一次.
如果SQL语句的实现效率非常低,那么将SQL语句移动到存储过程中将无济于事.但是,数据库将知道如何最好地优化SQL,并且不需要重复执行.它还可以通过将复杂的SQL语句转换为简单的过程调用来使客户端代码更清晰.
我会快速浏览一下存储过程是EVIL.
只要您的调用是一致的,数据库就会存储执行计划(无论如何都是MS SQL).使用存储过程的最强剩余原因是为了方便和可靠的安全管理.
如果我是你,我首先要在需要时添加索引.还运行一个分析工具来检查需要多长时间,以及是否需要更改sql,例如添加更多Where子句或限制结果集.
你应该考虑尽可能缓存.
存储过程不会使事情变得更快.
但是,重新排列逻辑会产生巨大影响.在考虑存储过程时,您设计的整洁,集中的事务非常有益.
此外,存储过程倾向于使用绑定变量,其他编程语言有时依赖于动态构建SQL语句.一小组固定的SQL语句和绑定变量很快.动态SQL语句很慢.
"最近运行缓慢"的应用程序不需要编码更改.
测量.测量.测量.在性能调优方面,"慢"并不意味着什么.什么慢?哪个确切的交易很慢?哪个表很慢?焦点.
控制所有变化.所有.改变了什么?OS补丁?RDBMS改变了吗?申请变更?改变了一些事情以减缓事情的发展.
检查规模的限制.由于80%的数据是您每年报告一次的历史记录,因此表格会变慢吗?
存储过程永远不是性能问题的解决方案,除非您绝对指向特定的代码块,这些代码块作为存储过程可以证明更快.