长时间回应,浮动错误

时间:2011-12-12 12:29:28

标签: mysql ubuntu

我有一个浮动问题

mysql  Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686) using readline 6.1  
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

这样的一个结果

mysql> SELECT `offers`.* FROM `offers` WHERE (created_at > '2011-12-12 07:00:00') ORDER BY updated_at DESC LIMIT 15 OFFSET 0
-> ;
Empty set (44.00 sec)

100个结果

mysql> SELECT `offers`.* FROM `offers` WHERE (created_at > '2011-12-12 07:00:00') ORDER BY updated_at DESC LIMIT 15 OFFSET 0;
Empty set (0.00 sec)

似乎除了我以外没有人可以访问数据库和锁表 我不明白发生了什么事 同样的问题开发AMD Athlon X4与4GM DDR3正在开发中 在Linode 512上计划Ubuntu 10.4
有没有人有想法?

2 个答案:

答案 0 :(得分:2)

在这个给定的场景中没有浮动问题,
机会是offers表很大,
并且您没有列created_at

的索引

MySQL需要执行全表扫描以确定匹配的数量(即使为空) 首次执行后,结果存入mysql查询缓存(内存),
如果自第一次查询以来没有更新数据,它将用于后续的相同查询。

它解释了为什么第二个查询占用零秒。

通常,当你有疑虑时,
这样做: -

desc extended SELECT `offers`.* FROM `offers` 
WHERE (created_at > '2011-12-12 07:00:00');

它将解释mysql如何进行查询优化

答案 1 :(得分:1)

可能是查询缓存。第一个查询执行正常查询,另外100个查询只执行查询缓存。试试这个以确保查询缓存负责这种奇怪的行为:

SELECT SQL_NO_CACHE `offers`.* FROM ...