复杂查询的存储过程

时间:2010-11-19 17:14:14

标签: mysql performance

我有一些经常运行的复杂查询。  缓存结果是不可能的,因为它们在大多数时间都会更新,并且看到更新的数据就是重点。

我不允许更改数据库设置,除非他们首先冻结,否则他们不会这样做,所以我必须尽我所能来优化查询和表格。

由于我认为我已经尽力完成这些查询以及他们使用的表格,我想如果我要为它们创建存储过程,速度是否会有任何提升。

是否可以提高速度,还是应该寻找别的东西?

3 个答案:

答案 0 :(得分:2)

不,使用存储过程不会提高“硬”查询的性能。

大多数硬查询都是由数据库需要做大量工作才能找到答案引起的。如果它存储在存储过程中,则不会有任何不同。

更改数据库设置可能会影响某些事情,但通常优化查询的最佳方法是更改​​数据结构,这样您就可以查询更少行或更少列。或者,您可以使用更好的索引或其他改进查询的方法。

使用EXPLAIN。使用非生产系统进行性能测试。不要费心将查询放入程序中(如果性能是您想要这样做的唯一原因)。

答案 1 :(得分:0)

是。使用存储过程将提高性能。由于SP被编译并存储在数据库服务器中。

但是它还取决于表的结构和查询!

如果您的数据库结构不佳且查询非优化,则数据增长时性能会很低。

答案 2 :(得分:0)

请参阅以下链接

MySQL Stored Procedure vs. complex query

它会给你带来很小的性能提升。