我有这样的疑问:
select *
from transaction_batch
where id IN
(
    select MAX(id) as id
    from transaction_batch
    where status_id IN (1,2)
    group by status_id
);内部查询运行得非常快(不到0.1秒),以获得两个ID,一个用于状态1,一个用于状态2,然后它根据主键进行选择,以便对其进行索引。explain查询说它使用where only搜索135k行,我无论如何也搞不懂为什么它这么慢。
发布于 2012-06-04 23:34:02
内部查询一遍又一遍地为表的每一行单独运行。
由于内部查询中没有对外部查询的引用,因此建议您拆分这两个查询,并将内部查询的结果插入到WHERE子句中。
https://stackoverflow.com/questions/10883908
复制相似问题