【发布时间】:2011-06-25 03:09:58
【问题描述】:
我正在尝试分析两个不同的查询,它们执行相同的操作以找出哪个更快。为了测试,我在两个查询中都放入了 SQL_NO_CACHE,以防止查询缓存弄乱时间。
查询 A 始终为 50 毫秒。 查询 B 第一次运行时为 100 毫秒,如果稍后我再次运行,则为 10 毫秒。
为什么第二次查询 B 更快?查询缓存不应该加速查询。可能是查询 B 的第一次运行将数据从磁盘加载到内存中,以便第二次查询在内存中运行并且更快?有没有办法测试这个?在运行查询 B 之前,我尝试通过从表中选择 * 来测试自己,但它仍然表现出相同的行为。 SQL_NO_CACHE 是否可能无法禁用查询缓存?
查询 B 如下所示: SELECT SQL_NO_CACHE foo,bar FROM table1 LEFT JOIN table2 ON table1.foo=table2.foo WHERE bar=1
【问题讨论】:
标签: mysql