Mysql - 存储过程不使用查询缓存

标签 mysql optimization

我刚刚将 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对此进行了详细讨论。引用文档中也提到了这些限制 hereMySQL Performance Blog 上.

基本上,不要依赖于在存储过程中执行的查询的缓存。虽然几乎不可能让它工作 the first reference确实声称这是可能的。如果您使用存储过程来封装复杂的逻辑,这通常不是问题。我看到的大多数问题都是由于对非常简单的查询使用存储过程引起的,其中 VIEW就足够了。

关于Mysql - 存储过程不使用查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577316/

相关文章:

c# - 优化一个非常大的两级深度迭代

c++ - gcc在编译期间是否自动对const值执行数学运算

mysql - 通过CMD将文件插入mysql数据库

MySQL LOAD DATA IN FILE 更新单列

css - 为什么不异步加载 CSS 文件解析 PageSpeed 的 ‘Defer unused CSS’ 条目?

r - 如何在约束优化中将参数的总和设置为 1

php - 在 macOS 上本地运行 CouchCMS 时路径损坏

mysql - 仅列出与另一个特定属性的所有其他记录链接的特定属性的记录

mysql - Symfony2、Doctrine2、MySql、查看表格

c++ - 骑士之旅 C++