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_hits
和 Qcache_inserts
。当查询结果如名称所示插入时,后者会增加,第一个会告诉您,在 select
之后是否使用了缓存。
从缓存中读取结果的查询必须与将结果集插入缓存的查询完全相同。它甚至区分大小写。
SELECT foo FROM bar;
不等于
SELECt foo FROM bar;
关于mysql - SQL_NO_CACHE 是否适用于整个查询,包括子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081543/