【发布时间】:2015-02-26 14:07:18
【问题描述】:
我希望从 1 M 行的表中获取最后 10 行。
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`updated_date` datetime NOT NULL,
PRIMARY KEY (`id`)
)
这样做的一种方法是 -
select * from test order by -id limit 10;
**10 rows in set (0.14 sec)**
另一种方法是 -
select * from test order by id desc limit 10;
**10 rows in set (0.00 sec)**
所以我对这些查询做了一个“解释”-
这是我使用 'order by desc' 的查询结果
EXPLAIN select * from test order by id desc limit 10;
这是我使用'order by -id'的查询结果
EXPLAIN select * from test order by -id limit 10;
我认为这将是相同的,但执行计划似乎存在差异。
【问题讨论】:
-
您是否在同一会话上运行了两个查询?有时这可能只是因为数据库现金而发生。
-
@smn_onrocks 你的意思是“数据库缓存”对吧?
-
@JakeGould 是的,没错
标签: mysql database-performance