我的问题是,如果我运行一个查询两次,那么在第二个查询的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找到)可以在任何一个表中对每个语句启用摘要计算?
1条答案
按热度按时间wtlkbnrh1#
查询缓存是否已打开?qc很早就做了一个摘要,如果它看到了相同的摘要,它将返回先前返回的结果集。也就是说,避免了语句执行。