首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长时间运行事务的存储过程中的性能提升

长时间运行事务的存储过程中的性能提升
EN

Stack Overflow用户
提问于 2008-09-24 19:58:45
回答 5查看 395关注 0票数 1

我有几个长时间运行的报告型事务,需要5-10分钟。通过使用存储过程,我是否会看到任何性能提升?这会有意义吗?

每个查询每晚运行一次。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-24 20:20:57

简短的答案是:不,存储过程不会提高性能。首先,如果您使用参数化查询,那么存储过程和内联SQL在性能上没有区别。原因是所有查询都缓存了执行计划,而不仅仅是存储过程。看一看http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx

如果你没有参数化你的内联查询,你只是构建查询并将‘参数’作为字面量插入,那么每个查询在数据库中看起来都是不同的,需要对每个查询进行预编译。因此,在这种情况下,在内联SQL中使用参数是在帮自己的忙。无论如何,从安全的角度来看,您都应该这样做,否则您就会受到SQL注入攻击。

但不管怎样,预编译问题在这里是一个转移注意力的问题。您正在谈论的是长时间运行的查询--如此之长,以至于预编译将变得无关紧要。所以不幸的是,你不会在这里轻易脱身。你的解决方案将是优化你的查询的实际设计,甚至重新思考你处理任务的整个方式。

票数 3
EN

Stack Overflow用户

发布于 2008-09-24 20:04:55

可能不会。存储过程为您提供了预编译SQL的优势。如果你的SQL不经常被调用,那么这个优势将变得毫无价值。因此,如果您的SQL因为查询本身很昂贵而很昂贵,那么存储过程将不会给您带来任何有意义的性能优势。如果您有频繁调用的查询,并且这些查询本身执行得很快,那么使用proc是值得的。

票数 5
EN

Stack Overflow用户

发布于 2008-09-24 20:12:02

很可能不是。从存储过程中获得的性能增益(取决于您的用例)在微观上是不可察觉的,只有在宏中是不明显的。

报告类型的查询是聚合大量数据的查询,如果是这样的话,无论执行方法如何,它都会很慢。只有索引和/或其他物理数据更改才能使其更快。

请参见:

Are Stored Procedures more efficient, in general, than inline statements on modern RDBMS's?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/129494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档