有没有办法在没有子选择的情况下执行此查询?

Ram*_*amy 0 mysql sql optimization

我不是积极的,但我相信子选择不是最佳的(速度?).

有没有办法从我的查询中删除此子选择(我认为查询是不言自明的).

select *
from tickers
where id = (select max(id) from tickers where annual_score is not null);
Run Code Online (Sandbox Code Playgroud)

小智 6

会是这样的:

SELECT * FROM ticker WHERE annual_score IS NOT NULL ORDER BY id desc LIMIT 1

工作?


pax*_*blo 5

那个特定的子选择根本不应该是低效的.它应该在主查询开始之前运行一次.

有一定的类子查询低效的(那些参加主查询和子查询之间的列),因为他们最终运行为主查询的每一行的子查询.

但这不应该是其中之一,除非MySQL受到严重的脑损伤,我对此表示怀疑.

但是,如果你仍然渴望摆脱子查询,你可以按id(降序)排序行,只获取第一行,如:

select * from tickers
where annual_score is not null
order by id desc
limit 0, 1
Run Code Online (Sandbox Code Playgroud)