如果相同的查询

mu0hgdu0  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(191)

我的问题是,如果我运行一个查询两次,那么在第二个查询的performance\模式中不会再次计算摘要和摘要\文本。
例子:

SELECT * FROM state;

事件\u语句\u历史\u long中的输出如下所示:
sql\文本:从状态选择*
摘要:f9842414749bbcda76ef05940ebc2f84
摘要文本:从状态选择*
锁定时间:372000000
如果我再次运行查询,事件\语句\历史记录\u long如下所示:
sql\文本:从状态选择*
摘要:空
摘要文本:空
锁定时间:0
这也很奇怪 LOCK_TIME 第二次尝试时值为0。在没有进行摘要计算的情况下,是否有一些优化正在进行?
我可以在所有有摘要列的表中看到这种行为。例如。
事件\语句\历史\长(列) digest 以及 digest_text )
事件\语句\历史(列) digest 以及 digest_text )
对象\摘要\全局\按\类型(列) count_star 不增加)
事件摘要(列) count_star 不增加)
我的猜测是,如果查询不变,这些值就不会重新计算。如果我对 where 条款摘要仅在条款发生变化时计算(例如从 where foo='bar'where foo='foo' )但如果不改变就不会。
所以我的问题是:是否有一些设置(我没有通过google或docs找到)可以在任何一个表中对每个语句启用摘要计算?

wtlkbnrh

wtlkbnrh1#

查询缓存是否已打开?qc很早就做了一个摘要,如果它看到了相同的摘要,它将返回先前返回的结果集。也就是说,避免了语句执行。

相关问题