我刚刚将 SQL select 语句转换为存储过程
SQL语句使用select语句取 第一次运行 0.4784 秒,之后运行 0.0003 秒
存储过程每次运行耗时0.4784s。
我假设查询缓存没有被使用
我该如何纠正这个问题?
代码的简化版本
SELECT * FROM Venues WHERE VenueName = :TheVenue
=======
CREATE PROCEDURE GetVenues
(
TheVenue VarChar(22)
)
BEGIN
SELECT * FROM Venues WHERE VenueName = TheVenue
END;
最佳答案
欢迎使用 MySQL...在存储过程中获取任何东西来利用查询缓存真的很难。开发文章A Practical Look at the MySQL Query Cache对此进行了详细讨论。引用文档中也提到了这些限制 here在 MySQL Performance Blog 上.
基本上,不要依赖于在存储过程中执行的查询的缓存。虽然几乎不可能让它工作 the first reference确实声称这是可能的。如果您使用存储过程来封装复杂的逻辑,这通常不是问题。我看到的大多数问题都是由于对非常简单的查询使用存储过程引起的,其中 VIEW
就足够了。
关于Mysql - 存储过程不使用查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577316/