我不是很肯定,但我相信子选择不是最优的(速度?)。
有没有办法从我的查询中删除这个子select(我认为这个查询是不言自明的)。
select *
from tickers
where id = (select max(id) from tickers where annual_score is not null);发布于 2013-04-17 12:12:15
这个特定的子选择不应该是低效的。它应该在主查询开始之前运行一次。
有一类子查询是低效的(那些在主查询和子查询之间联接列的子查询),因为它们最终会为主查询的每一行运行子查询。
但这不应该是其中之一,除非MySQL受到了严重的脑损伤,我对此表示怀疑。
但是,如果您仍然希望删除子查询,则可以按id (降序)对行进行排序,并且只提取第一个,如下所示:
select * from tickers
where annual_score is not null
order by id desc
limit 0, 1发布于 2013-04-17 12:13:15
会不会像这样:
SELECT * FROM ticker WHERE annual_score IS NOT NULL ORDER BY id desc LIMIT 1
工作?
发布于 2013-04-17 12:14:32
不太熟悉MySQL,但是如果您想删除子查询,可以尝试如下所示:
select *
from tickers
where annual_score is not null
order by id desc
limit 1我不知道这是或多或少的表现,因为MySQL不是我的背景。
https://stackoverflow.com/questions/16051310
复制相似问题