mysql - SQL_NO_CACHE 是否适用于整个查询,包括子查询?

标签 mysql

SQL_NO_CACHE 可用于在执行 SELECT 查询时禁用 MySQL 的缓存,如下所示:-

SELECT SQL_NO_CACHE * FROM tblA

我想知道如果我还需要为子查询指定,我是否执行包含子查询的查询,例如:-

SELECT SQL_NO_CACHE
     a.*,
     (SELECT col1 FROM tblB WHERE id=1)
FROM tblA a

是否会为子查询禁用缓存?

最佳答案

它不仅适用于整个查询,子查询根本不会被缓存。

您可以通过发出命令自行检查缓存是否命中

SHOW STATUS LIKE 'QCache%';

您将在这些变量中看到 QCache_hitsQcache_inserts。当查询结果如名称所示插入时,后者会增加,第一个会告诉您,在 select 之后是否使用了缓存。

从缓存中读取结果的查询必须与将结果集插入缓存的查询完全相同。它甚至区分大小写。

 SELECT foo FROM bar;

不等于

 SELECt foo FROM bar;

关于mysql - SQL_NO_CACHE 是否适用于整个查询,包括子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081543/

相关文章:

mysql - 按日期和时间存储在两个不同的列mysql中

mysql - 搜索一列中与另一列(同一表)中的单个值匹配的多个值

php - 为什么多次上传没有插入数据库

php - 使用 Foreach 插入

php - 如果没有找到所有数据,Mysql 查询返回 false

mysql - MySQL查询查找重复时间戳

java - 为什么我的 java String 的长度比它生成的 byte[] 数组短?

mysql - SQL 查询显示结果 Year to month per month

php - PHP 中的 MySQL 数据顺序不正确

mysql - OFFSET 在 MySQL 查询中不起作用