我有一个浮动问题
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)
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
有没有人有想法?
答案 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 ...