我们有一张桌子:
create table ducks (id int(8) primary key not null auto_increment,
name varchar(255),
car varchar(255),
money int(8)
);
insert into ducks set name='donald', car='none', money=10;
insert into ducks set name='scrudge', car='bip', money=10000;
insert into ducks set name='mac', car='bip', money=1000;
insert into ducks set name='joe', car='boo', money=2000000;
因此,对此进行分析后,我发现我们对以下请求的查询速度很慢:
select name,money from ducks where car='bip' order by money DESC LIMIT 1;
因为表很大,排序只是为了得到一条记录很长
我发现以下工作更快:
select distinct name,money from ducks where money=(select max(money) from ducks where car='bip') LIMIT 1;
但仍然不确定,因为它是子选择。
解决这个问题的常用方法是什么?
http://sqlfiddle.com/#!2/d2b7ed/6
更新它变成了实际上我们的任务不是搜索同一辆车,而是搜索最富有的鸭子,它的价格低于 100000 美元